mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-02 10:45:30 +00:00
aquatic_ws: improve network message reading, handle parse error better
This commit is contained in:
parent
48d49c9a1a
commit
523a21dac4
1 changed files with 33 additions and 24 deletions
|
|
@ -206,7 +206,6 @@ pub fn run_handshakes_and_read_messages(
|
||||||
|
|
||||||
match established_ws.ws.read_message() {
|
match established_ws.ws.read_message() {
|
||||||
Ok(ws_message) => {
|
Ok(ws_message) => {
|
||||||
if let Ok(in_message) = InMessage::from_ws_message(ws_message) {
|
|
||||||
let naive_peer_addr = established_ws.peer_addr;
|
let naive_peer_addr = established_ws.peer_addr;
|
||||||
let converted_peer_ip = convert_ipv4_mapped_ipv6(naive_peer_addr.ip());
|
let converted_peer_ip = convert_ipv4_mapped_ipv6(naive_peer_addr.ip());
|
||||||
|
|
||||||
|
|
@ -219,8 +218,8 @@ pub fn run_handshakes_and_read_messages(
|
||||||
|
|
||||||
debug!("read message");
|
debug!("read message");
|
||||||
|
|
||||||
match in_message {
|
match InMessage::from_ws_message(ws_message) {
|
||||||
InMessage::AnnounceRequest(ref request) if !state.access_list.allows(access_list_mode, &request.info_hash.0) => {
|
Ok(InMessage::AnnounceRequest(ref request)) if !state.access_list.allows(access_list_mode, &request.info_hash.0) => {
|
||||||
let out_message = OutMessage::ErrorResponse(ErrorResponse {
|
let out_message = OutMessage::ErrorResponse(ErrorResponse {
|
||||||
failure_reason: "Info hash not allowed".into(),
|
failure_reason: "Info hash not allowed".into(),
|
||||||
action: Some(ErrorResponseAction::Announce),
|
action: Some(ErrorResponseAction::Announce),
|
||||||
|
|
@ -229,12 +228,22 @@ pub fn run_handshakes_and_read_messages(
|
||||||
|
|
||||||
local_responses.push((meta, out_message));
|
local_responses.push((meta, out_message));
|
||||||
},
|
},
|
||||||
_ => {
|
Ok(in_message) => {
|
||||||
if let Err(err) = in_message_sender.send((meta, in_message)) {
|
if let Err(err) = in_message_sender.send((meta, in_message)) {
|
||||||
error!("InMessageSender: couldn't send message: {:?}", err);
|
error!("InMessageSender: couldn't send message: {:?}", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
Err(err) => {
|
||||||
|
info!("error parsing message: {:?}", err);
|
||||||
|
|
||||||
|
let out_message = OutMessage::ErrorResponse(ErrorResponse {
|
||||||
|
failure_reason: "Error parsing message".into(),
|
||||||
|
action: None,
|
||||||
|
info_hash: None,
|
||||||
|
});
|
||||||
|
|
||||||
|
local_responses.push((meta, out_message));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(Io(err)) if err.kind() == ErrorKind::WouldBlock => {
|
Err(Io(err)) if err.kind() == ErrorKind::WouldBlock => {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue