aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs1
-rw-r--r--src/server.rs36
2 files changed, 24 insertions, 13 deletions
diff --git a/src/lib.rs b/src/lib.rs
index ab40fa9..2ffe77e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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),
+ }
}