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; } } }