aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/websocket.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2016-02-18 02:44:01 +0530
committerbors-servo <lbergstrom+bors@mozilla.com>2016-02-18 02:44:01 +0530
commitbc034845b7e543e4e71fa21d6bf99e9f10ddb6c5 (patch)
tree6085d7891931c251d55e2fce6698923449ca477e /components/script/dom/websocket.rs
parentf7f0eea47035f4316d09db26315bf8ebb72637c9 (diff)
parentcf6fd6dafe9b4abf73dc1c38fa270e786de82952 (diff)
downloadservo-bc034845b7e543e4e71fa21d6bf99e9f10ddb6c5.tar.gz
servo-bc034845b7e543e4e71fa21d6bf99e9f10ddb6c5.zip
Auto merge of #9662 - rebstar6:websocket_cookies, r=jdm
Add support for websocket cookies Addresses both cookies in request and response. Resolves #9540. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9662) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/websocket.rs')
-rw-r--r--components/script/dom/websocket.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index 949f1c683a2..27d7850f4da 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -29,7 +29,8 @@ use js::jsapi::{JSAutoCompartment, JSAutoRequest, RootedValue};
use js::jsapi::{JS_GetArrayBufferData, JS_NewArrayBuffer};
use js::jsval::UndefinedValue;
use libc::{uint32_t, uint8_t};
-use net_traits::ControlMsg::WebsocketConnect;
+use net_traits::ControlMsg::{WebsocketConnect, SetCookiesForUrl};
+use net_traits::CookieSource::HTTP;
use net_traits::MessageData;
use net_traits::hosts::replace_hosts;
use net_traits::unwrap_websocket_protocol;
@@ -485,6 +486,15 @@ impl Runnable for ConnectionEstablishedTask {
};
// Step 5: Cookies.
+ if let Some(cookies) = self.headers.get_raw("set-cookie") {
+ for cookie in cookies.iter() {
+ if let Ok(cookie_value) = String::from_utf8(cookie.clone()) {
+ let _ = ws.global().r().resource_thread().send(SetCookiesForUrl(ws.url.clone(),
+ cookie_value,
+ HTTP));
+ }
+ }
+ }
// Step 6.
ws.upcast().fire_simple_event("open");