diff --git a/Dockerfile b/Dockerfile
index 5661053..7ad0dfa 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -20,6 +20,7 @@ FROM scratch
WORKDIR /
CMD mkdir /scripts
+CMD touch /scripts/curl.sh
CMD echo "#!/bin/sh" >> /scripts/curl.sh
CMD echo "echo Hello there!" >> /scripts/curl.sh
diff --git a/src/main.rs b/src/main.rs
index dcf8ba4..f9cc31a 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,8 +1,7 @@
use compound_error::CompoundError;
use hyper::service::{make_service_fn, service_fn};
use hyper::{Body, Client, Request, Response, Server, Uri};
-use kv_log_macro::info;
-use log::error;
+use kv_log_macro::{error, info};
use std::net::SocketAddr;
use std::path::PathBuf;
use structopt::StructOpt;
@@ -43,8 +42,16 @@ async fn proxy_pass(mut req: Request
, opt: &Opt) -> Result,
let mut error = None;
let response = if user_agent_matches {
- let file = fs::read_to_string(&opt.file).await?;
- Response::new(file.into())
+ match fs::read_to_string(&opt.file).await {
+ Ok(file) => Response::new(file.into()),
+ Err(e) => {
+ error = Some(format!("{:?}", e));
+ Response::builder()
+ .status(404)
+ .body("File not found".into())
+ .expect("infallible response")
+ }
+ }
} else {
let proxy_uri: Uri = opt.proxy_pass.parse().expect("proxy uri");
@@ -62,11 +69,11 @@ async fn proxy_pass(mut req: Request, opt: &Opt) -> Result,
match client.request(req).await {
Ok(response) => response,
Err(e) => {
- error = Some(e);
+ error = Some(format!("{:?}", e));
Response::builder()
.status(503)
.body("503 Service Unavailable".into())
- .unwrap()
+ .expect("infallible response")
}
}
};