From dff9827cfa75060bf9959d9041ea589848b56a2b Mon Sep 17 00:00:00 2001 From: Jade Devin Cabatlao Date: Wed, 12 Feb 2020 03:26:22 +0800 Subject: [PATCH] Solves issue 107 https://github.com/snapview/tungstenite-rs/issues/107 --- src/handshake/server.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/handshake/server.rs b/src/handshake/server.rs index 4cf47d1a..e85d6207 100644 --- a/src/handshake/server.rs +++ b/src/handshake/server.rs @@ -75,13 +75,24 @@ pub fn create_response(request: &Request) -> Result { .get("Sec-WebSocket-Key") .ok_or_else(|| Error::Protocol("Missing Sec-WebSocket-Key".into()))?; - let builder = Response::builder() + let protocol_default = HeaderValue::from_static(""); + + let protocol = request + .headers() + .get("Sec-WebSocket-Protocol") + .unwrap_or(&protocol_default); + + let mut builder = Response::builder() .status(StatusCode::SWITCHING_PROTOCOLS) .version(request.version()) .header("Connection", "Upgrade") .header("Upgrade", "websocket") .header("Sec-WebSocket-Accept", convert_key(key.as_bytes())?); + if !protocol.is_empty() { + builder = builder.header("Sec-WebSocket-Protocol", protocol); + } + Ok(builder.body(())?) }