From e6939099530627ab47e28c4f859b955ce40315cf Mon Sep 17 00:00:00 2001 From: TQ Hirsch Date: Sun, 19 Nov 2023 01:13:19 +0100 Subject: [PATCH] Handle HTTP errors sensibly on GET --- src/handler.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/handler.rs b/src/handler.rs index 31ac94d..64107ae 100644 --- a/src/handler.rs +++ b/src/handler.rs @@ -50,9 +50,16 @@ impl async_tftp::server::Handler for Handler { match resource { Resource::Http(url) => { // TODO: Add headers describing client - let req = self.http.get(url).send().await.map_err(|err| Error::Msg(err.to_string()))?; - let size = req.content_length(); - let stream = req.bytes_stream() + let resp = self.http.get(url).send().await.map_err(|err| Error::Msg(err.to_string()))?; + match resp.status() { + StatusCode::OK => {}, + StatusCode::NOT_FOUND => return Err(Error::FileNotFound), + StatusCode::UNAUTHORIZED => return Err(Error::PermissionDenied), + x => return Err(Error::Msg(x.to_string())) + } + + let size = resp.content_length(); + let stream = resp.bytes_stream() .map_err(|e| futures::io::Error::new(futures::io::ErrorKind::Other, e)) .into_async_read();