on invalid requests, return error response; simplify Request type

This commit is contained in:
Joakim Frostegård 2020-04-06 19:43:49 +02:00
parent 8cf3644e78
commit 8426e8f3f7
4 changed files with 14 additions and 22 deletions

View file

@ -90,18 +90,26 @@ pub fn run_event_loop(
); );
match request { match request {
Request::Connect(r) => { Ok(Request::Connect(r)) => {
connect_requests.push((r, src)); connect_requests.push((r, src));
}, },
Request::Announce(r) => { Ok(Request::Announce(r)) => {
announce_requests.push((r, src)); announce_requests.push((r, src));
}, },
Request::Scrape(r) => { Ok(Request::Scrape(r)) => {
scrape_requests.push((r, src)); scrape_requests.push((r, src));
}, },
_ => { Ok(Request::Invalid(r)) => {
// FIXME let response = Response::Error(ErrorResponse {
} transaction_id: r.transaction_id,
message: "Invalid request".to_string(),
});
responses.push((response, src));
},
Err(err) => {
eprintln!("Request parse error: {:?}", err);
},
} }
}, },
Err(err) => { Err(err) => {

View file

@ -64,18 +64,6 @@ pub fn request_to_bytes(request: &types::Request) -> Vec<u8> {
pub fn request_from_bytes( pub fn request_from_bytes(
bytes: &[u8], bytes: &[u8],
max_scrape_torrents: u8, max_scrape_torrents: u8,
) -> types::Request {
match try_request_from_bytes(bytes, max_scrape_torrents){
Ok(request) => request,
Err(_) => types::Request::Error
}
}
fn try_request_from_bytes(
bytes: &[u8],
max_scrape_torrents: u8,
) -> Result<types::Request,io::Error> { ) -> Result<types::Request,io::Error> {
let mut bytes = io::Cursor::new(bytes); let mut bytes = io::Cursor::new(bytes);

View file

@ -52,8 +52,4 @@ pub enum Request {
Announce(AnnounceRequest), Announce(AnnounceRequest),
Scrape(ScrapeRequest), Scrape(ScrapeRequest),
Invalid(InvalidRequest), Invalid(InvalidRequest),
/// Should ideally only be used when no transaction id can be parsed,
/// but is currently also used as a catch-all for non-specific errors
Error,
} }

0
scripts/run-server.sh Normal file → Executable file
View file