loolwsd/LOOLSession.cpp | 5 +++-- loolwsd/MasterProcessSession.cpp | 2 +- loolwsd/Util.cpp | 7 ++++--- loolwsd/Util.hpp | 5 +++-- 4 files changed, 11 insertions(+), 8 deletions(-)
New commits: commit d3fc5ac37ba0575f0dc628e51c3ec20de4bbfaec Author: Ashod Nakashian <[email protected]> Date: Thu Jan 21 09:28:05 2016 -0500 loolwsd: sockets are shutdown on disconnect Change-Id: I1c00be4648cff94013ceab87fcb607b9bb921535 Reviewed-on: https://gerrit.libreoffice.org/21684 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Ashod Nakashian <[email protected]> diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp index 3522bd8..92d8f85 100644 --- a/loolwsd/LOOLSession.cpp +++ b/loolwsd/LOOLSession.cpp @@ -98,8 +98,7 @@ LOOLSession::LOOLSession(const std::string& id, const Kind kind, LOOLSession::~LOOLSession() { - if (_ws) - Util::shutdownWebSocket(*_ws); + Util::shutdownWebSocket(_ws); } void LOOLSession::sendTextFrame(const std::string& text) @@ -183,12 +182,14 @@ void LOOLSession::disconnect(const std::string& reason) { sendTextFrame("disconnect " + reason); _disconnected = true; + Util::shutdownWebSocket(_ws); } } bool LOOLSession::handleDisconnect(Poco::StringTokenizer& /*tokens*/) { _disconnected = true; + Util::shutdownWebSocket(_ws); return false; } diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp index 370202b..a2be65d 100644 --- a/loolwsd/MasterProcessSession.cpp +++ b/loolwsd/MasterProcessSession.cpp @@ -763,7 +763,7 @@ void MasterProcessSession::dispatchChild() if (nRequest < 0 && !bFound) { Log::error(getName() + ": Failed to connect to child. Shutting down socket."); - Util::shutdownWebSocket(*_ws); + Util::shutdownWebSocket(_ws); return; } diff --git a/loolwsd/Util.cpp b/loolwsd/Util.cpp index ec8d9b9..872219a 100644 --- a/loolwsd/Util.cpp +++ b/loolwsd/Util.cpp @@ -279,15 +279,16 @@ namespace Util return true; } - void shutdownWebSocket(Poco::Net::WebSocket& ws) + void shutdownWebSocket(std::shared_ptr<Poco::Net::WebSocket> ws) { try { - ws.shutdown(); + if (ws) + ws->shutdown(); } catch (const Poco::IOException& exc) { - Log::error("IOException: " + exc.message()); + Log::warn("IOException while socket shutdown: " + exc.message()); } } diff --git a/loolwsd/Util.hpp b/loolwsd/Util.hpp index 1e50562..eff40bd 100644 --- a/loolwsd/Util.hpp +++ b/loolwsd/Util.hpp @@ -13,6 +13,7 @@ #include <string> #include <sstream> #include <functional> +#include <memory> #include <Poco/File.h> #include <Poco/Path.h> @@ -56,8 +57,8 @@ namespace Util int bufferWidth, int bufferHeight, std::vector<char>& output, LibreOfficeKitTileMode mode); - // Call WebSocket::shutdown() ignoring Poco::IOException - void shutdownWebSocket(Poco::Net::WebSocket& ws); + /// Call WebSocket::shutdown() ignoring Poco::IOException. + void shutdownWebSocket(std::shared_ptr<Poco::Net::WebSocket> ws); ssize_t writeFIFO(const int nPipe, const char* pBuffer, ssize_t nSize); inline _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
