diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-06-11 05:58:56 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-06-11 05:58:56 -0600 |
commit | a3eb253bdce7ed4ad5bcc2c2e7af9cfe01826d99 (patch) | |
tree | c8386625dfb50406373e4b0fa7923fcaa984f2af /components/script/dom/websocket.rs | |
parent | 74ef31cfc4805d6dbeaa9e4769f0ceb14d124733 (diff) | |
parent | 877c369e0bc5db4286457be36d015eeb1f0ae2f2 (diff) | |
download | servo-a3eb253bdce7ed4ad5bcc2c2e7af9cfe01826d99.tar.gz servo-a3eb253bdce7ed4ad5bcc2c2e7af9cfe01826d99.zip |
Auto merge of #6338 - servo:ws-connect, r=Ms2ger
Make an early return when the WebSocket connection fails in the constructor.
Also let the WebSockect connection to be closed when the connection could
not be established.
Fixes #6082.
Fixes #6086.
<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6338)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/websocket.rs')
-rw-r--r-- | components/script/dom/websocket.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index c0c6a624862..9272346d416 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -141,7 +141,16 @@ impl WebSocket { // TODO Client::connect does not conform to RFC 6455 // see https://github.com/cyderize/rust-websocket/issues/38 - let request = Client::connect(parsed_url).unwrap(); + let request = match Client::connect(parsed_url) { + Ok(request) => request, + Err(_) => { + let global_root = ws_root.global.root(); + let address = Trusted::new(global_root.r().get_cx(), ws_root, global_root.r().script_chan().clone()); + let task = box WebSocketTaskHandler::new(address, WebSocketTask::Close); + global_root.r().script_chan().send(ScriptMsg::RunnableMsg(task)).unwrap(); + return Ok(Temporary::from_rooted(ws_root)); + } + }; let response = request.send().unwrap(); response.validate().unwrap(); ws_root.ready_state.set(WebSocketRequestState::Open); |