diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-06-16 01:47:10 -0600 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-06-16 01:47:10 -0600 |
commit | a5d76e4b2c6ae8e2db82fc5156ad1bebf7961f80 (patch) | |
tree | aee9a394c74ffa21e23d98ff9a23f093a877a9ce /components/script/dom/websocket.rs | |
parent | 4435e6f42a1b57a3e6a0cfbb1033525fef5db174 (diff) | |
parent | 7781f331d3407a895f1dadeeff3a74ad0c7f5ca8 (diff) | |
download | servo-a5d76e4b2c6ae8e2db82fc5156ad1bebf7961f80.tar.gz servo-a5d76e4b2c6ae8e2db82fc5156ad1bebf7961f80.zip |
Auto merge of #6397 - servo:ws-connect, r=Ms2ger
Make an early return when the WebSocket connection fails in the constructor.
Also let the WebSocket connection to be closed when the connection could
not be established.
Fixes #6082.
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); |