common/Session.hpp | 13 +++++++++++-- net/WebSocketHandler.hpp | 3 ++- wsd/ClientSession.cpp | 6 +++--- wsd/DocumentBroker.cpp | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-)
New commits: commit 17cbb2b7b9d79961660f7ba929dd89db2cafea80 Author: Michael Meeks <michael.me...@collabora.com> AuthorDate: Thu Mar 5 18:42:00 2020 +0000 Commit: Michael Meeks <michael.me...@collabora.com> CommitDate: Thu Mar 5 20:22:32 2020 +0100 Session: simplify shutdown and privatize some pieces. Change-Id: Ifbb40f6a88590bd87dbfada73fa26eb0b61705fb Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90058 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Michael Meeks <michael.me...@collabora.com> diff --git a/common/Session.hpp b/common/Session.hpp index 8171fef64..093234a2d 100644 --- a/common/Session.hpp +++ b/common/Session.hpp @@ -100,8 +100,13 @@ public: /// Called to handle disconnection command from socket. virtual bool handleDisconnect(); - void shutdown(const WebSocketHandler::StatusCodes statusCode = WebSocketHandler::StatusCodes::NORMAL_CLOSE, - const std::string& statusMessage = ""); + /// clean & normal shutdown + void shutdownNormal(const std::string& statusMessage = "") + { shutdown(WebSocketHandler::StatusCodes::NORMAL_CLOSE, statusMessage); } + + /// abnormal / hash shutdown end-point going away + void shutdownGoingAway(const std::string& statusMessage = "") + { shutdown(WebSocketHandler::StatusCodes::ENDPOINT_GOING_AWAY, statusMessage); } bool isActive() const { return _isActive; } void setIsActive(bool active) { _isActive = active; } @@ -178,6 +183,10 @@ protected: void dumpState(std::ostream& os) override; private: + + void shutdown(const WebSocketHandler::StatusCodes statusCode = WebSocketHandler::StatusCodes::NORMAL_CLOSE, + const std::string& statusMessage = ""); + virtual bool _handleInput(const char* buffer, int length) = 0; /// A session ID specific to an end-to-end connection (from user to lokit). diff --git a/net/WebSocketHandler.hpp b/net/WebSocketHandler.hpp index 17d364d3a..f18927a22 100644 --- a/net/WebSocketHandler.hpp +++ b/net/WebSocketHandler.hpp @@ -437,6 +437,7 @@ public: } #if !MOBILEAPP +private: /// Send a ping message void sendPingOrPong(std::chrono::steady_clock::time_point now, const char* data, const size_t len, @@ -493,7 +494,7 @@ public: } #endif } - +public: /// By default rely on the socket buffer. void performWrites() override {} diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 8a79d46bb..5639448e7 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -1675,20 +1675,20 @@ void ClientSession::onDisconnect() LOG_TRC("Normal close handshake."); // Client initiated close handshake // respond with close frame - shutdown(); + shutdownNormal(); } else if (!SigUtil::getShutdownRequestFlag()) { // something wrong, with internal exceptions LOG_TRC("Abnormal close handshake."); closeFrame(); - shutdown(WebSocketHandler::StatusCodes::ENDPOINT_GOING_AWAY); + shutdownGoingAway(); } else { LOG_TRC("Server recycling."); closeFrame(); - shutdown(WebSocketHandler::StatusCodes::ENDPOINT_GOING_AWAY); + shutdownGoingAway(); } } catch (const std::exception& exc) diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 18bcdce63..b89fc8439 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -2135,7 +2135,7 @@ void DocumentBroker::shutdownClients(const std::string& closeReason) else { // Notify the client and disconnect. - session->shutdown(WebSocketHandler::StatusCodes::ENDPOINT_GOING_AWAY, closeReason); + session->shutdownGoingAway(closeReason); // Remove session, save, and mark to destroy. removeSession(session->getId()); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits