Skip to content

Commit 6a5d11e

Browse files
Echo the CloseFrame when close is initiated
1 parent a25750d commit 6a5d11e

1 file changed

Lines changed: 10 additions & 13 deletions

File tree

src/protocol/mod.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -555,23 +555,20 @@ impl WebSocketContext {
555555
debug!("Received close frame: {:?}", close);
556556
match self.state {
557557
WebSocketState::Active => {
558-
let close_code = close.as_ref().map(|f| f.code);
559558
self.state = WebSocketState::ClosedByPeer;
560-
let reply = if let Some(code) = close_code {
561-
if code.is_allowed() {
562-
Frame::close(Some(CloseFrame {
563-
code: CloseCode::Normal,
564-
reason: "".into(),
565-
}))
566-
} else {
567-
Frame::close(Some(CloseFrame {
559+
560+
let close = close.map(|frame| {
561+
if !frame.code.is_allowed() {
562+
CloseFrame {
568563
code: CloseCode::Protocol,
569564
reason: "Protocol violation".into(),
570-
}))
565+
}
566+
} else {
567+
frame
571568
}
572-
} else {
573-
Frame::close(None)
574-
};
569+
});
570+
571+
let reply = Frame::close(close.clone());
575572
debug!("Replying to close with {:?}", reply);
576573
self.send_queue.push_back(reply);
577574

0 commit comments

Comments
 (0)