summaryrefslogtreecommitdiffstats
path: root/wsd/COOLWSD.cpp
diff options
context:
space:
mode:
authorCaolán McNamara <caolan.mcnamara@collabora.com>2023-10-18 10:32:59 +0100
committerMiklos Vajna <vmiklos@collabora.com>2023-10-19 08:45:23 +0200
commitc4e973ee5efa4a90ae65c5f139812e92cd30117f (patch)
treec7c7b6584f2559b408acc178ab7d3a1f4a2b79d8 /wsd/COOLWSD.cpp
parentUI: Prefill rename dialog with the current document name (diff)
downloadonline-c4e973ee5efa4a90ae65c5f139812e92cd30117f.tar.gz
online-c4e973ee5efa4a90ae65c5f139812e92cd30117f.zip
cid#318817 avoid Uncaught exception
and cid#318819 Uncaught exception take a reference in the COOLWSD/DocumentBroker ctor, so indicating it exists before the calls in the COOLWSD/DocumentBroker dtor, and so the Admin ctor doesn't throw during the COOLWSD/DocumentBroker dtor. Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com> Change-Id: I8190cc3594a5f81fedd355aeadcca45e532bda90
Diffstat (limited to 'wsd/COOLWSD.cpp')
-rw-r--r--wsd/COOLWSD.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/wsd/COOLWSD.cpp b/wsd/COOLWSD.cpp
index 613ecea86c..043ec03d29 100644
--- a/wsd/COOLWSD.cpp
+++ b/wsd/COOLWSD.cpp
@@ -5497,8 +5497,11 @@ class COOLWSDServer
// allocate port & hold temporarily.
std::shared_ptr<ServerSocket> _serverSocket;
public:
- COOLWSDServer() :
- _acceptPoll("accept_poll")
+ COOLWSDServer()
+ : _acceptPoll("accept_poll")
+#if !MOBILEAPP
+ , _admin(Admin::instance())
+#endif
{
}
@@ -5536,7 +5539,7 @@ public:
WebServerPoll->startThread();
#if !MOBILEAPP
- Admin::instance().start();
+ _admin.start();
#endif
}
@@ -5546,7 +5549,7 @@ public:
if (WebServerPoll)
WebServerPoll->joinThread();
#if !MOBILEAPP
- Admin::instance().stop();
+ _admin.stop();
#endif
}
@@ -5611,7 +5614,7 @@ public:
#if !MOBILEAPP
os << "Admin poll:\n";
- Admin::instance().dumpState(os);
+ _admin.dumpState(os);
// If we have any delaying work going on.
Delay::dumpState(os);
@@ -5644,6 +5647,10 @@ private:
/// This thread & poll accepts incoming connections.
AcceptPoll _acceptPoll;
+#if !MOBILEAPP
+ Admin& _admin;
+#endif
+
/// Create the internal only, local socket for forkit / kits prisoners to talk to.
std::shared_ptr<ServerSocket> findPrisonerServerPort()
{