summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index c3e8cc7..fe7856e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -127,7 +127,7 @@ async fn serve_http(state: Arc<State>) -> Result<()> {
debug!("connection from {addr}");
let stream = TokioIo::new(stream);
let state = state.clone();
- tokio::spawn(async move { serve_stream(state, stream, addr).await });
+ tokio::spawn(async move { serve_stream(state, stream, addr, false).await });
}
}))
.await;
@@ -163,7 +163,7 @@ async fn serve_https(state: Arc<State>) -> Result<()> {
tokio::task::spawn(async move {
debug!("connection from {addr}");
match tls_acceptor.accept(stream).await {
- Ok(stream) => serve_stream(state, TokioIo::new(stream), addr).await,
+ Ok(stream) => serve_stream(state, TokioIo::new(stream), addr, true).await,
Err(e) => warn!("error accepting tls: {e}"),
};
});
@@ -178,6 +178,7 @@ pub async fn serve_stream<T: Unpin + Send + 'static + hyper::rt::Read + hyper::r
state: Arc<State>,
stream: T,
addr: SocketAddr,
+ secure: bool,
) {
if let Ok(_semaphore) = state.l_incoming.try_acquire() {
let builder = hyper_util::server::conn::auto::Builder::new(TokioExecutor::new());
@@ -187,7 +188,7 @@ pub async fn serve_stream<T: Unpin + Send + 'static + hyper::rt::Read + hyper::r
let state = state.clone();
async move {
let config = state.config.read().await.clone();
- match service(state, config, req, addr).await {
+ match service(state, config, req, addr, secure).await {
Ok(r) => Ok(r),
Err(ServiceError::Hyper(e)) => Err(e),
Err(error) => Ok({
@@ -220,6 +221,7 @@ async fn service(
config: Arc<Config>,
mut request: Request<Incoming>,
addr: SocketAddr,
+ secure: bool,
) -> Result<hyper::Response<BoxBody<bytes::Bytes, ServiceError>>, ServiceError> {
// move uri authority used in HTTP/2 to Host header field
{
@@ -241,7 +243,11 @@ async fn service(
request.uri()
);
- let mut context = NodeContext { addr, state };
+ let mut context = NodeContext {
+ addr,
+ state,
+ secure,
+ };
let mut resp = config
.handler
.handle(&mut context, request.map(|body| body.boxed()))