index : static-web-server.git

ascending towards madness

author Jose Quintana <joseluisquintana20@gmail.com> 2020-04-21 8:12:42.0 +00:00:00
committer Jose Quintana <joseluisquintana20@gmail.com> 2020-04-21 8:12:42.0 +00:00:00
commit
07bf49b0e5e879025f89e9b2e4e70dd72c760ea3 [patch]
tree
96bfa51ded5615fccf51a82babeb98116634eeea
parent
a449eb30c2228e790e4cedc8426d02fae17b8293
download
07bf49b0e5e879025f89e9b2e4e70dd72c760ea3.tar.gz

refactor: empty response body only on HEAD requests & status error

http status errors like 404 or 50x

Diff

 src/error_page.rs | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/error_page.rs b/src/error_page.rs
index 832533e..1f43564 100644
--- a/src/error_page.rs
+++ b/src/error_page.rs
@@ -1,6 +1,4 @@
use iron::headers::ContentLength;
use iron::mime;
use iron::modifiers::Header;
use iron::prelude::*;
use iron::status;
use iron::AfterMiddleware;
@@ -41,6 +39,8 @@ impl ErrorPage {
impl AfterMiddleware for ErrorPage {
    fn after(&self, req: &mut Request, resp: Response) -> IronResult<Response> {
        let content_type = "text/html".parse::<mime::Mime>().unwrap();
        let mut no_status_error = false;

        let mut resp = match resp.status {
            Some(status::NotFound) => {
                Response::with((content_type, status::NotFound, self.page404.as_str()))
@@ -61,13 +61,15 @@ impl AfterMiddleware for ErrorPage {
            Some(status::GatewayTimeout) => {
                Response::with((content_type, status::GatewayTimeout, self.page50x.as_str()))
            }
            _ => resp,
            _ => {
                no_status_error = true;
                resp
            }
        };

        // Empty response body on HEAD requests
        if req.method == iron::method::Head {
        // Empty response body only on HEAD requests and status error (404,50x)
        if req.method == iron::method::Head && !no_status_error {
            resp.set_mut(Vec::new());
            resp.set_mut(Header(ContentLength(0)));
        }

        Ok(resp)