diff --git a/server/src/future.rs b/server/src/future.rs index d26b9cb936..5443001de0 100644 --- a/server/src/future.rs +++ b/server/src/future.rs @@ -61,6 +61,7 @@ impl StopHandle { } } +/// Error when the server has already been stopped. #[derive(Debug, Copy, Clone, thiserror::Error)] #[error("The server is already stopped")] pub struct AlreadyStoppedError; diff --git a/server/src/transport/ws.rs b/server/src/transport/ws.rs index b0c048da1c..cdac32fe3a 100644 --- a/server/src/transport/ws.rs +++ b/server/src/transport/ws.rs @@ -415,14 +415,6 @@ where match server.receive_request(&req) { Ok(response) => { - let upgraded = match hyper::upgrade::on(req).await { - Ok(u) => u, - Err(e) => { - tracing::debug!(target: LOG_TARGET, "WS upgrade handshake failed: {}", e); - return Err(hyper::Response::new(hyper::Body::from(format!("WS upgrade handshake failed {e}")))); - } - }; - let (tx, rx) = mpsc::channel::(server_cfg.message_buffer_capacity as usize); let sink = MethodSink::new(tx); @@ -448,6 +440,14 @@ where let rpc_service = rpc_middleware.service(rpc_service); let fut = async move { + let upgraded = match hyper::upgrade::on(req).await { + Ok(u) => u, + Err(e) => { + tracing::debug!(target: LOG_TARGET, "WS upgrade handshake failed: {}", e); + return; + } + }; + let stream = BufReader::new(BufWriter::new(upgraded.compat())); let mut ws_builder = server.into_builder(stream); ws_builder.set_max_message_size(server_cfg.max_response_body_size as usize);