Merge pull request #246 from snapview/echo-close-code

Echo the `CloseFrame` when close is initiated
pull/248/head
Daniel Abramov 3 years ago committed by GitHub
commit 951411096d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 21
      src/protocol/mod.rs

@ -555,23 +555,20 @@ impl WebSocketContext {
debug!("Received close frame: {:?}", close);
match self.state {
WebSocketState::Active => {
let close_code = close.as_ref().map(|f| f.code);
self.state = WebSocketState::ClosedByPeer;
let reply = if let Some(code) = close_code {
if code.is_allowed() {
Frame::close(Some(CloseFrame {
code: CloseCode::Normal,
reason: "".into(),
}))
} else {
Frame::close(Some(CloseFrame {
let close = close.map(|frame| {
if !frame.code.is_allowed() {
CloseFrame {
code: CloseCode::Protocol,
reason: "Protocol violation".into(),
}))
}
} else {
Frame::close(None)
};
frame
}
});
let reply = Frame::close(close.clone());
debug!("Replying to close with {:?}", reply);
self.send_queue.push_back(reply);

Loading…
Cancel
Save