Feature/multi surbs (#1796)
* bunch of wip with focus on serialization * Being able to send normal data (NO SURBS yet) to yourself again * Fixed RepliableMessage deserialization * Recovering data from surb messages * Extracted common code in sphinx payload construction * Cleanup within received buffer * requesting, sending and using additional reply surbs * Following discussion with @simonwicky, removing sender proof and decreasing size of sender tag * Made sender tag more easily configurable * Refactoring of message creation * Propagating reply surb acks but not retransmitting them yet * Surb retransmissions * requesting additional surbs from the retransmission flow * correctly determining the point of requesting additional surbs * Ability to use socks5 (and network requester) with surbs * Improved surbs retranmsission reliability * naive way of not over-requesting surbs * wip on tag storage * Improved error propagation for message construction * Requesting more surbs for stale entries * Better controlling the point of having to request additional surbs * Using pseudorandom sender tag instead of a hardcoded one * First cleanup round in MessageHandler * Error cleanup and if simplification * Assigned a more permanent name to the ReplyController * Removed PendingReply redundant type * Made socks5 client less eager to over-send reply surbs * 'anonymous' field on socks5 client to decide whether to use surbs or attach address * Dead code and import removal in client-core * Updating ClientRequest variants * Adjusted decision threshold for requesting more surbs * Native client cleanup * Made socks5 client usage of surbs configurable * Restored statistics in network requester * Validator-api compiles once again * Further improved surb request logic * boxing the recipient in controller requests * Removal of hardcoded values in favour of propagating them from the config * more validation during surb requests * Fixed ClientRequest::Send deserialization * Added length checks for request deserialization * post-merge formatting * Unit tests once again compile and pass * controlling retransmission_reply_surb_request_size from config * More Recipient boxing action * Requesting additional reply surbs for retransmission BEFORE dipping below the threshold * Making clippy generally happier * Wasm client compiles (but might not yet work correctly) * Feature/use expect instead of panicking (#1797) * Implementation of 'Debug' on 'RealMessage' * expect with failed channel name instead of throwing empty panics * Introduced Debug trait constraint in ProxyRunner * Derive Debug for socks5_requests::Message * Fix decrypting stored received msg (#1786) * Fix decrypting stored received msg * rustfmt * Moving binary message recovery to separate function Co-authored-by: Jędrzej Stuczyński <jedrzej.stuczynski@gmail.com> * real_traffic_stream: reduce frequency of status print (#1794) * Properly defined unnamed errors * Dealing with previously ignored errors * logging improvements * Removed old example code Co-authored-by: Jon Häggblad <jon.haggblad@gmail.com>
This commit is contained in:
committed by
GitHub
parent
9c361385a7
commit
4cbfa9c0fa
@@ -25,58 +25,59 @@ async fn get_self_address(ws_stream: &mut WebSocketStream<MaybeTlsStream<TcpStre
|
||||
let response = send_message_and_get_response(ws_stream, self_address_request).await;
|
||||
|
||||
match response {
|
||||
ServerResponse::SelfAddress(recipient) => recipient,
|
||||
ServerResponse::SelfAddress(recipient) => *recipient,
|
||||
_ => panic!("received an unexpected response!"),
|
||||
}
|
||||
}
|
||||
|
||||
async fn send_file_with_reply() {
|
||||
let uri = "ws://localhost:1977";
|
||||
let (mut ws_stream, _) = connect_async(uri).await.unwrap();
|
||||
|
||||
let recipient = get_self_address(&mut ws_stream).await;
|
||||
println!("our full address is: {}", recipient);
|
||||
|
||||
let read_data = std::fs::read("examples/dummy_file").unwrap();
|
||||
|
||||
let send_request = ClientRequest::Send {
|
||||
recipient,
|
||||
message: read_data,
|
||||
with_reply_surb: true,
|
||||
connection_id: Some(0),
|
||||
};
|
||||
|
||||
println!("sending content of 'dummy_file' over the mix network...");
|
||||
let response = send_message_and_get_response(&mut ws_stream, send_request.serialize()).await;
|
||||
|
||||
let received = match response {
|
||||
ServerResponse::Received(received) => received,
|
||||
_ => panic!("received an unexpected response!"),
|
||||
};
|
||||
|
||||
println!("writing the file back to the disk!");
|
||||
std::fs::write("examples/received_file_withreply", received.message).unwrap();
|
||||
|
||||
let reply_message = b"hello from reply SURB! - thanks for sending me the file!".to_vec();
|
||||
let reply_request = ClientRequest::Reply {
|
||||
message: reply_message.clone(),
|
||||
reply_surb: received.reply_surb.unwrap(),
|
||||
};
|
||||
|
||||
println!(
|
||||
"sending {:?} (using reply SURB!) over the mix network...",
|
||||
String::from_utf8(reply_message).unwrap()
|
||||
);
|
||||
let response = send_message_and_get_response(&mut ws_stream, reply_request.serialize()).await;
|
||||
let received = match response {
|
||||
ServerResponse::Received(received) => received,
|
||||
_ => panic!("received an unexpected response!"),
|
||||
};
|
||||
|
||||
println!(
|
||||
"received {:#?} from the mix network!",
|
||||
String::from_utf8(received.message).unwrap()
|
||||
);
|
||||
todo!("reimplement surb usage here : )")
|
||||
// let uri = "ws://localhost:1977";
|
||||
// let (mut ws_stream, _) = connect_async(uri).await.unwrap();
|
||||
//
|
||||
// let recipient = get_self_address(&mut ws_stream).await;
|
||||
// println!("our full address is: {}", recipient);
|
||||
//
|
||||
// let read_data = std::fs::read("examples/dummy_file").unwrap();
|
||||
//
|
||||
// let send_request = ClientRequest::Send {
|
||||
// recipient,
|
||||
// message: read_data,
|
||||
// with_reply_surb: true,
|
||||
// connection_id: Some(0),
|
||||
// };
|
||||
//
|
||||
// println!("sending content of 'dummy_file' over the mix network...");
|
||||
// let response = send_message_and_get_response(&mut ws_stream, send_request.serialize()).await;
|
||||
//
|
||||
// let received = match response {
|
||||
// ServerResponse::Received(received) => received,
|
||||
// _ => panic!("received an unexpected response!"),
|
||||
// };
|
||||
//
|
||||
// println!("writing the file back to the disk!");
|
||||
// std::fs::write("examples/received_file_withreply", received.message).unwrap();
|
||||
//
|
||||
// let reply_message = b"hello from reply SURB! - thanks for sending me the file!".to_vec();
|
||||
// let reply_request = ClientRequest::Reply {
|
||||
// message: reply_message.clone(),
|
||||
// reply_surb: received.reply_surb.unwrap(),
|
||||
// };
|
||||
//
|
||||
// println!(
|
||||
// "sending {:?} (using reply SURB!) over the mix network...",
|
||||
// String::from_utf8(reply_message).unwrap()
|
||||
// );
|
||||
// let response = send_message_and_get_response(&mut ws_stream, reply_request.serialize()).await;
|
||||
// let received = match response {
|
||||
// ServerResponse::Received(received) => received,
|
||||
// _ => panic!("received an unexpected response!"),
|
||||
// };
|
||||
//
|
||||
// println!(
|
||||
// "received {:#?} from the mix network!",
|
||||
// String::from_utf8(received.message).unwrap()
|
||||
// );
|
||||
}
|
||||
|
||||
async fn send_file_without_reply() {
|
||||
@@ -91,7 +92,6 @@ async fn send_file_without_reply() {
|
||||
let send_request = ClientRequest::Send {
|
||||
recipient,
|
||||
message: read_data,
|
||||
with_reply_surb: false,
|
||||
connection_id: Some(0),
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user