diff options
author | James Sanders <sanderjd@gmail.com> | 2016-01-17 16:55:30 -0700 |
---|---|---|
committer | James Sanders <sanderjd@gmail.com> | 2016-01-18 17:37:16 -0700 |
commit | d121958a17ab8b6b637cb3d8398bb65682e53362 (patch) | |
tree | 96369cd2b4d67aa92c82c96e7bc61ea837dbdf11 /components/net/websocket_loader.rs | |
parent | a640b9aaeaeb054276ca6bdb6982c5346f9548d3 (diff) | |
download | servo-d121958a17ab8b6b637cb3d8398bb65682e53362.tar.gz servo-d121958a17ab8b6b637cb3d8398bb65682e53362.zip |
Make closing related code more clear and more correct
Diffstat (limited to 'components/net/websocket_loader.rs')
-rw-r--r-- | components/net/websocket_loader.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/components/net/websocket_loader.rs b/components/net/websocket_loader.rs index 461972b35f0..e25d7e7389f 100644 --- a/components/net/websocket_loader.rs +++ b/components/net/websocket_loader.rs @@ -71,7 +71,7 @@ pub fn init(connect: WebSocketCommunicate, connect_data: WebSocketConnectData) { Ok(net_url) => net_url, Err(e) => { debug!("Failed to establish a WebSocket connection: {:?}", e); - let _ = connect.event_sender.send(WebSocketNetworkEvent::Close); + let _ = connect.event_sender.send(WebSocketNetworkEvent::Fail); return; } }; @@ -87,7 +87,7 @@ pub fn init(connect: WebSocketCommunicate, connect_data: WebSocketConnectData) { }, Err(e) => { debug!("Failed to establish a WebSocket connection: {:?}", e); - let _ = connect.event_sender.send(WebSocketNetworkEvent::Close); + let _ = connect.event_sender.send(WebSocketNetworkEvent::Fail); return; } @@ -114,7 +114,9 @@ pub fn init(connect: WebSocketCommunicate, connect_data: WebSocketConnectData) { Type::Pong => continue, Type::Close => { ws_sender_incoming.lock().unwrap().send_message(&message).unwrap(); - let _ = resource_event_sender.send(WebSocketNetworkEvent::Close); + let code = message.cd_status_code; + let reason = String::from_utf8_lossy(&message.payload).into_owned(); + let _ = resource_event_sender.send(WebSocketNetworkEvent::Close(code, reason)); break; }, }; @@ -134,8 +136,11 @@ pub fn init(connect: WebSocketCommunicate, connect_data: WebSocketConnectData) { ws_sender_outgoing.lock().unwrap().send_message(&Message::binary(data)).unwrap(); }, WebSocketDomAction::Close(code, reason) => { - ws_sender_outgoing.lock().unwrap() - .send_message(&Message::close_because(code, reason)).unwrap(); + let message = match code { + Some(code) => Message::close_because(code, reason.unwrap_or("".to_owned())), + None => Message::close() + }; + ws_sender_outgoing.lock().unwrap().send_message(&message).unwrap(); }, } } |