aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/websocket_loader.rs
diff options
context:
space:
mode:
authorJames Sanders <sanderjd@gmail.com>2016-01-17 16:55:30 -0700
committerJames Sanders <sanderjd@gmail.com>2016-01-18 17:37:16 -0700
commitd121958a17ab8b6b637cb3d8398bb65682e53362 (patch)
tree96369cd2b4d67aa92c82c96e7bc61ea837dbdf11 /components/net/websocket_loader.rs
parenta640b9aaeaeb054276ca6bdb6982c5346f9548d3 (diff)
downloadservo-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.rs15
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();
},
}
}