mirror of
https://github.com/fafhrd91/actix-web
synced 2024-11-30 18:44:35 +01:00
Allow comma-separated websocket subprotocols without spaces (#1172)
* Allow comma-separated websocket subprotocols without spaces * [CHANGES] Added an entry to CHANGES.md
This commit is contained in:
parent
4921243add
commit
8c3f58db9d
@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
* Migrate to tokio 0.2
|
* Migrate to tokio 0.2
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
* Allow comma-separated websocket subprotocols without spaces (#1172)
|
||||||
|
|
||||||
## [2.0.0-alpha.1] - 2019-11-22
|
## [2.0.0-alpha.1] - 2019-11-22
|
||||||
|
|
||||||
|
@ -152,7 +152,8 @@ pub fn handshake_with_protocols(
|
|||||||
.and_then(|req_protocols| {
|
.and_then(|req_protocols| {
|
||||||
let req_protocols = req_protocols.to_str().ok()?;
|
let req_protocols = req_protocols.to_str().ok()?;
|
||||||
req_protocols
|
req_protocols
|
||||||
.split(", ")
|
.split(',')
|
||||||
|
.map(|req_p| req_p.trim())
|
||||||
.find(|req_p| protocols.iter().any(|p| p == req_p))
|
.find(|req_p| protocols.iter().any(|p| p == req_p))
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -736,5 +737,46 @@ mod tests {
|
|||||||
.headers()
|
.headers()
|
||||||
.get(&header::SEC_WEBSOCKET_PROTOCOL)
|
.get(&header::SEC_WEBSOCKET_PROTOCOL)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let req = TestRequest::default()
|
||||||
|
.header(
|
||||||
|
header::UPGRADE,
|
||||||
|
header::HeaderValue::from_static("websocket"),
|
||||||
|
)
|
||||||
|
.header(
|
||||||
|
header::CONNECTION,
|
||||||
|
header::HeaderValue::from_static("upgrade"),
|
||||||
|
)
|
||||||
|
.header(
|
||||||
|
header::SEC_WEBSOCKET_VERSION,
|
||||||
|
header::HeaderValue::from_static("13"),
|
||||||
|
)
|
||||||
|
.header(
|
||||||
|
header::SEC_WEBSOCKET_KEY,
|
||||||
|
header::HeaderValue::from_static("13"),
|
||||||
|
)
|
||||||
|
.header(
|
||||||
|
header::SEC_WEBSOCKET_PROTOCOL,
|
||||||
|
header::HeaderValue::from_static("p1,p2,p3"),
|
||||||
|
)
|
||||||
|
.to_http_request();
|
||||||
|
|
||||||
|
let protocols = vec!["p3", "p2"];
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
StatusCode::SWITCHING_PROTOCOLS,
|
||||||
|
handshake_with_protocols(&req, &protocols)
|
||||||
|
.unwrap()
|
||||||
|
.finish()
|
||||||
|
.status()
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
Some(&header::HeaderValue::from_static("p2")),
|
||||||
|
handshake_with_protocols(&req, &protocols)
|
||||||
|
.unwrap()
|
||||||
|
.finish()
|
||||||
|
.headers()
|
||||||
|
.get(&header::SEC_WEBSOCKET_PROTOCOL)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user