loolwsd/LOOLSession.cpp | 3 ++- loolwsd/MasterProcessSession.cpp | 23 ++++++++++++++++------- 2 files changed, 18 insertions(+), 8 deletions(-)
New commits: commit 6668dca7aca1ce6dd2ac76eeb020318797aeee7b Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Mon Jan 11 23:22:02 2016 -0500 loolwsd: handle I/O error while destroying MasterProcessSession Change-Id: I9618fb57bcb3cdb472d03abb6c49d649afbf25a5 Reviewed-on: https://gerrit.libreoffice.org/21379 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp index a730937..0941bf5 100644 --- a/loolwsd/LOOLSession.cpp +++ b/loolwsd/LOOLSession.cpp @@ -185,7 +185,8 @@ bool LOOLSession::handleInput(const char *buffer, int length) } catch (const Exception& exc) { - Log::error() << "Error while handling [" + getFirstLine(buffer, length) + "]. " + Log::error() << "Error while handling [" + getFirstLine(buffer, length) + "] in " + << getName() << ". " << exc.displayText() << (exc.nested() ? " (" + exc.nested()->displayText() + ")" : "") << Log::end; diff --git a/loolwsd/MasterProcessSession.cpp b/loolwsd/MasterProcessSession.cpp index abe0809..2440e71 100644 --- a/loolwsd/MasterProcessSession.cpp +++ b/loolwsd/MasterProcessSession.cpp @@ -51,16 +51,25 @@ MasterProcessSession::~MasterProcessSession() { Log::info("~MasterProcessSession dtor [" + getName() + "]."); - auto peer = _peer.lock(); - if (_kind == Kind::ToClient && peer) + try { - peer->sendTextFrame("eof"); + // We could be unwinding because our peer's connection + // died. Handle I/O errors in that case. + auto peer = _peer.lock(); + if (_kind == Kind::ToClient && peer) + { + peer->sendTextFrame("eof"); + } + else + if (_kind == Kind::ToPrisoner && peer) + { + peer->_bShutdown = true; + Util::shutdownWebSocket(*(peer->_ws)); + } } - else - if (_kind == Kind::ToPrisoner && peer) + catch (const std::exception& exc) { - peer->_bShutdown = true; - Util::shutdownWebSocket(*(peer->_ws)); + Log::error(std::string("Exception: ") + exc.what()); } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits