1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-24 16:19:12 -05:00

fix(ext/websocket): prevent 'closed normally' panic (#12437)

This commit is contained in:
Leo K 2021-10-19 18:21:15 +02:00 committed by GitHub
parent f83c756aa0
commit d6062b2653
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 5 deletions

View file

@ -417,6 +417,7 @@
});
break;
}
case "closed":
case "close": {
this[_readyState] = CLOSED;

View file

@ -261,6 +261,7 @@
});
break;
}
case "closed":
case "close": {
if (this[_closing]) {
this[_closed].resolve(value);

View file

@ -82,7 +82,8 @@ pub struct WsStreamResource {
impl WsStreamResource {
async fn send(self: &Rc<Self>, message: Message) -> Result<(), AnyError> {
match self.stream {
use tokio_tungstenite::tungstenite::Error;
let res = match self.stream {
WebSocketStreamType::Client { .. } => {
let mut tx = RcRef::map(self, |r| match &r.stream {
WebSocketStreamType::Client { tx, .. } => tx,
@ -90,7 +91,7 @@ impl WsStreamResource {
})
.borrow_mut()
.await;
tx.send(message).await?;
tx.send(message).await
}
WebSocketStreamType::Server { .. } => {
let mut tx = RcRef::map(self, |r| match &r.stream {
@ -99,11 +100,15 @@ impl WsStreamResource {
})
.borrow_mut()
.await;
tx.send(message).await?;
}
tx.send(message).await
}
};
Ok(())
match res {
Ok(()) => Ok(()),
Err(Error::ConnectionClosed) => Ok(()),
Err(err) => Err(err.into()),
}
}
async fn next_message(