Refactor additional_send writing

This commit is contained in:
Alex Butler 2023-05-27 13:27:55 +01:00
parent 84a54b76e6
commit 06e55a4ef2
1 changed files with 6 additions and 5 deletions

View File

@ -434,16 +434,17 @@ impl WebSocketContext {
// respond with Pong frame as soon as is practical. (RFC 6455)
let should_flush = if let Some(msg) = self.additional_send.take() {
trace!("Sending pong/close");
if let Err(err) = self.write_one_frame(stream, msg) {
match err {
match self.write_one_frame(stream, msg) {
Err(Error::WriteBufferFull(Message::Frame(msg))) => {
// if an system message would exceed the buffer put it back in
// `additional_send` for retry. Otherwise returning this error
// may not make sense to the user, e.g. calling `flush`.
Error::WriteBufferFull(Message::Frame(msg)) => self.set_additional(msg),
err => return Err(err),
self.set_additional(msg);
false
}
Err(err) => return Err(err),
Ok(_) => true,
}
true
} else {
false
};