From f3a3b6195ecca51c909faf9e9e08a058f8a89724 Mon Sep 17 00:00:00 2001 From: Ed Hennis Date: Wed, 6 Dec 2023 22:09:01 -0500 Subject: [PATCH] [FOLD] On second thought, don't need the closing_ flag --- src/ripple/server/impl/BaseWSPeer.h | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/ripple/server/impl/BaseWSPeer.h b/src/ripple/server/impl/BaseWSPeer.h index faf8ced47a6..fd1722df003 100644 --- a/src/ripple/server/impl/BaseWSPeer.h +++ b/src/ripple/server/impl/BaseWSPeer.h @@ -53,11 +53,10 @@ class BaseWSPeer : public BasePeer, public WSSession boost::beast::multi_buffer rb_; boost::beast::multi_buffer wb_; std::list> wq_; - /// The next completion will close the socket. Don't send any more. + /// The socket has been closed, or will close after the next write + /// finishes. Do not do any more writes, and don't try to close + /// again. bool do_close_ = false; - /// async_close has been initiated, or will be soon. Don't send or - /// try to close again. - bool closing_ = false; boost::beast::websocket::close_reason cr_; waitable_timer timer_; bool close_on_timer_ = false; @@ -228,7 +227,7 @@ BaseWSPeer::send(std::shared_ptr w) strand_, std::bind( &BaseWSPeer::send, impl().shared_from_this(), std::move(w))); - if (closing_) + if (do_close_) return; if (wq_.size() > port().ws_queue_limit) { @@ -261,9 +260,9 @@ BaseWSPeer::close( return post(strand_, [self = impl().shared_from_this(), reason] { self->close(reason); }); - if (closing_) + if (do_close_) return; - closing_ = true; + do_close_ = true; if (wq_.empty()) { impl().ws_.async_close( @@ -277,7 +276,6 @@ BaseWSPeer::close( } else { - do_close_ = true; cr_ = reason; } } @@ -357,7 +355,6 @@ BaseWSPeer::on_write_fin(error_code const& ec) wq_.pop_front(); if (do_close_) { - assert(closing_); impl().ws_.async_close( cr_, bind_executor(