aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2020-02-25 12:43:12 -0500
committerJosh Matthews <josh@joshmatthews.net>2020-02-25 13:53:15 -0500
commitba83f0ffa69705b85289063e47a2e3bb2bb2e669 (patch)
tree543941fa7443af97f4b58636b44a2a8694e50040
parent5a55ae1b13497d1ae78ff01596f4342dce16d9be (diff)
downloadservo-ba83f0ffa69705b85289063e47a2e3bb2bb2e669.tar.gz
servo-ba83f0ffa69705b85289063e47a2e3bb2bb2e669.zip
Don't panic when dealing with disconnected websockets.
-rw-r--r--components/net/websocket_loader.rs24
-rw-r--r--tests/wpt/metadata/websockets/constructor/009.html.ini5
-rw-r--r--tests/wpt/metadata/websockets/constructor/022.html.ini5
-rw-r--r--tests/wpt/metadata/websockets/cookies/005.html.ini1
-rw-r--r--tests/wpt/metadata/websockets/opening-handshake/003-sets-origin.worker.js.ini2
-rw-r--r--tests/wpt/metadata/websockets/opening-handshake/003.html.ini5
-rw-r--r--tests/wpt/metadata/websockets/opening-handshake/005.html.ini5
7 files changed, 17 insertions, 30 deletions
diff --git a/components/net/websocket_loader.rs b/components/net/websocket_loader.rs
index fb24e6566a4..c4a8483837a 100644
--- a/components/net/websocket_loader.rs
+++ b/components/net/websocket_loader.rs
@@ -268,21 +268,31 @@ pub fn init(
let dom_action = message.to().expect("Ws dom_action message to deserialize");
match dom_action {
WebSocketDomAction::SendMessage(MessageData::Text(data)) => {
- ws_sender.send(Message::text(data)).unwrap();
+ if let Err(e) = ws_sender.send(Message::text(data)) {
+ warn!("Error sending websocket message: {:?}", e);
+ }
},
WebSocketDomAction::SendMessage(MessageData::Binary(data)) => {
- ws_sender.send(Message::binary(data)).unwrap();
+ if let Err(e) = ws_sender.send(Message::binary(data)) {
+ warn!("Error sending websocket message: {:?}", e);
+ }
},
WebSocketDomAction::Close(code, reason) => {
if !initiated_close.fetch_or(true, Ordering::SeqCst) {
match code {
- Some(code) => ws_sender
- .close_with_reason(
+ Some(code) => {
+ if let Err(e) = ws_sender.close_with_reason(
code.into(),
reason.unwrap_or("".to_owned()),
- )
- .unwrap(),
- None => ws_sender.close(CloseCode::Status).unwrap(),
+ ) {
+ warn!("Error closing websocket: {:?}", e);
+ }
+ },
+ None => {
+ if let Err(e) = ws_sender.close(CloseCode::Status) {
+ warn!("Error closing websocket: {:?}", e);
+ }
+ },
};
}
},
diff --git a/tests/wpt/metadata/websockets/constructor/009.html.ini b/tests/wpt/metadata/websockets/constructor/009.html.ini
deleted file mode 100644
index cafe256b18c..00000000000
--- a/tests/wpt/metadata/websockets/constructor/009.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[009.html?wss]
- expected: TIMEOUT
-
-[009.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/websockets/constructor/022.html.ini b/tests/wpt/metadata/websockets/constructor/022.html.ini
deleted file mode 100644
index da02a1678d5..00000000000
--- a/tests/wpt/metadata/websockets/constructor/022.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[022.html]
- expected: TIMEOUT
-
-[022.html?wss]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/websockets/cookies/005.html.ini b/tests/wpt/metadata/websockets/cookies/005.html.ini
index 83aee6d14e4..03e42d20a06 100644
--- a/tests/wpt/metadata/websockets/cookies/005.html.ini
+++ b/tests/wpt/metadata/websockets/cookies/005.html.ini
@@ -4,4 +4,3 @@
[005.html?wss]
type: testharness
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/websockets/opening-handshake/003-sets-origin.worker.js.ini b/tests/wpt/metadata/websockets/opening-handshake/003-sets-origin.worker.js.ini
deleted file mode 100644
index bf535e0993d..00000000000
--- a/tests/wpt/metadata/websockets/opening-handshake/003-sets-origin.worker.js.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[003-sets-origin.worker.html]
- expected: CRASH
diff --git a/tests/wpt/metadata/websockets/opening-handshake/003.html.ini b/tests/wpt/metadata/websockets/opening-handshake/003.html.ini
deleted file mode 100644
index 44f502faaa6..00000000000
--- a/tests/wpt/metadata/websockets/opening-handshake/003.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[003.html?wss]
- expected: TIMEOUT
-
-[003.html]
- expected: TIMEOUT
diff --git a/tests/wpt/metadata/websockets/opening-handshake/005.html.ini b/tests/wpt/metadata/websockets/opening-handshake/005.html.ini
deleted file mode 100644
index 1afd2545cd2..00000000000
--- a/tests/wpt/metadata/websockets/opening-handshake/005.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[005.html?wss]
- expected: TIMEOUT
-
-[005.html]
- expected: TIMEOUT