Skip to content

Commit

Permalink
Merge pull request #246 from snapview/echo-close-code
Browse files Browse the repository at this point in the history
Echo the `CloseFrame` when close is initiated
  • Loading branch information
daniel-abramov authored Oct 20, 2021
2 parents 1bbb4ce + 5ad8cef commit 9514110
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions src/protocol/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
} else {
Frame::close(None)
};
});

let reply = Frame::close(close.clone());
debug!("Replying to close with {:?}", reply);
self.send_queue.push_back(reply);

Expand Down

0 comments on commit 9514110

Please sign in to comment.