1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-06-02 21:39:26 +00: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:
Vlad Frolov 2019-12-07 16:08:06 +02:00 committed by Nikolay Kim
parent 4921243add
commit 8c3f58db9d
2 changed files with 46 additions and 1 deletions

View file

@ -6,6 +6,9 @@
* Migrate to tokio 0.2
### Fixed
* Allow comma-separated websocket subprotocols without spaces (#1172)
## [2.0.0-alpha.1] - 2019-11-22

View file

@ -152,7 +152,8 @@ pub fn handshake_with_protocols(
.and_then(|req_protocols| {
let req_protocols = req_protocols.to_str().ok()?;
req_protocols
.split(", ")
.split(',')
.map(|req_p| req_p.trim())
.find(|req_p| protocols.iter().any(|p| p == req_p))
});
@ -736,5 +737,46 @@ mod tests {
.headers()
.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)
);
}
}