From c3909865e6913ad733a11c249847393112ac4090 Mon Sep 17 00:00:00 2001 From: kazk Date: Tue, 14 Sep 2021 13:04:29 -0700 Subject: [PATCH] Support multiple `Sec-WebSocket-Extensions` request headers --- src/handshake/server.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/handshake/server.rs b/src/handshake/server.rs index 3c8dbd8..85b2c55 100644 --- a/src/handshake/server.rs +++ b/src/handshake/server.rs @@ -246,14 +246,16 @@ impl HandshakeRole for ServerHandshake { let mut response = create_response(&result)?; if let Some(compression) = &self.config.and_then(|c| c.compression) { - if let Some(extensions) = result + for extensions in result .headers() - .get("Sec-WebSocket-Extensions") - .and_then(|v| v.to_str().ok()) + .get_all("Sec-WebSocket-Extensions") + .iter() + .filter_map(|h| h.to_str().ok()) { if let Some((agreed, pmce)) = compression.negotiation_response(extensions) { self.pmce = Some(pmce); response.headers_mut().insert("Sec-WebSocket-Extensions", agreed); + break; } } }