diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 1 | ||||
| -rw-r--r-- | src/server.rs | 36 | 
2 files changed, 24 insertions, 13 deletions
| @@ -1,6 +1,7 @@  extern crate conduit;  extern crate fastcgi;  extern crate http; +extern crate log;  mod request;  mod server; diff --git a/src/server.rs b/src/server.rs index 9bbba00..22bf244 100644 --- a/src/server.rs +++ b/src/server.rs @@ -3,6 +3,8 @@ use std::io::Write;  use conduit::Handler; +use log::error; +  use snafu::{ResultExt, Snafu};  use crate::request; @@ -31,16 +33,22 @@ impl Server {          fastcgi::run(move |mut raw_request| {              match handle_request(&mut raw_request, &handler) {                  Ok(_) => (), - -                // TODO: log -                // Ignore write errors as clients will have closed the -                // connection by this point. -                Err(Error::Write { .. }) => (), - -                Err(Error::RequestBuilder { .. }) => -                    internal_server_error(&mut raw_request.stdout()), -                Err(Error::ConduitResponse { .. }) => -                    internal_server_error(&mut raw_request.stdout()), +                Err(e) => match e { +                    // Ignore write errors as clients will have closed the +                    // connection by this point. +                    Error::Write { .. } => error!("Write error: {}", e), + +                    Error::RequestBuilder { .. } => { +                        error!("Unable to build request: {}", e); + +                        internal_server_error(&mut raw_request.stdout()) +                    }, +                    Error::ConduitResponse { .. } => { +                        error!("Error getting response: {}", e); + +                        internal_server_error(&mut raw_request.stdout()) +                    }, +                }              }          }); @@ -95,13 +103,15 @@ where H: Handler + 'static + Sync  fn internal_server_error<W: Write>(mut w: W) {      let code = conduit::StatusCode::INTERNAL_SERVER_ERROR; -    write!( +    match write!(          w,          "{} {} {}\r\n{}\r\n\r\n",          HTTP_VERSION,          code,          code.canonical_reason().unwrap_or_default(),          "Content-Length: 0", -    ) -        .unwrap_or(()) +    ) { +        Ok(_) => (), +        Err(e) => error!("Write error: {}", e), +    }  } | 
