Echo the `CloseFrame` when close is initiated
This commit is contained in:
parent
89697449ff
commit
5ad8cef6ff
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue