[Libreoffice-commits] online.git: kit/Kit.cpp net/Socket.hpp wsd/DocumentBroker.hpp
Tor Lillqvist (via logerrit)
logerrit at kemper.freedesktop.org
Thu Mar 12 23:28:38 UTC 2020
kit/Kit.cpp | 11 +++++++++--
net/Socket.hpp | 1 +
wsd/DocumentBroker.hpp | 3 +--
3 files changed, 11 insertions(+), 4 deletions(-)
New commits:
commit d4e08350431a7662eef22a21b5b0fede226ae0e6
Author: Tor Lillqvist <tml at collabora.com>
AuthorDate: Thu Mar 12 22:17:05 2020 +0200
Commit: Tor Lillqvist <tml at collabora.com>
CommitDate: Fri Mar 13 00:28:19 2020 +0100
Make closing the document work again in the iOS (and Android?) app
But opening a second document now hangs.
Sigh, the plumbing in the mobile apps is so extremely fragile. But
that is to be expected when turning a multi-process structure (where
one class of processes exit as soon as they have done their job) into
a single process running forever.
Change-Id: I0fdb751f44e16efb42843189969e049bf14816f0
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90443
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Tor Lillqvist <tml at collabora.com>
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index f8c76a06a..8e2b2ddc5 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -2149,14 +2149,21 @@ protected:
LOG_DBG("CreateSession failed.");
}
}
-#if !MOBILEAPP
+
else if (tokens.equals(0, "exit"))
{
+#if !MOBILEAPP
LOG_INF("Terminating immediately due to parent 'exit' command.");
Log::shutdown();
std::_Exit(EX_SOFTWARE);
- }
+#else
+ LOG_INF("Setting TerminationFlag due to 'exit' command.");
+ SigUtil::setTerminationFlag();
+
+ // Not really a logic error, but hey. This is expected to be caught in SocketPoll::poll().
+ throw std::logic_error("exit");
#endif
+ }
else if (tokens.equals(0, "tile") || tokens.equals(0, "tilecombine") || tokens.equals(0, "canceltiles") ||
tokens.equals(0, "paintwindow") || tokens.equals(0, "resizewindow") ||
LOOLProtocol::getFirstToken(tokens[0], '-') == "child")
diff --git a/net/Socket.hpp b/net/Socket.hpp
index 5427b99fa..1e632516e 100644
--- a/net/Socket.hpp
+++ b/net/Socket.hpp
@@ -673,6 +673,7 @@ public:
LOG_ERR("Error while handling poll for socket #" <<
_pollFds[i].fd << " in " << _name << ": " << exc.what());
disposition.setClosed();
+ rc = -1;
}
if (disposition.isMove() || disposition.isClosed())
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index 7096afd4c..68369d274 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -108,7 +108,6 @@ public:
try
{
-#if !MOBILEAPP // There is no "child process" in a mobile app
LOG_DBG("Closing ChildProcess [" << _pid << "].");
// Request the child to exit
@@ -117,7 +116,7 @@ public:
LOG_DBG("Stopping ChildProcess [" << _pid << "] by sending 'exit' command.");
sendTextFrame("exit");
}
-#endif
+
// Shutdown the socket.
if (_ws)
_ws->shutdown();
More information about the Libreoffice-commits
mailing list