Honor core stop in desktop owner loop and verify cleanup
This commit is contained in:
1 parent
289b592598
commit
c75bfc618a
2 files changed
+18
-1
No files matched your search
@@ -91,6 +91,22 @@ private slots:
|
||||
}
|
||||
}
|
||||
|
||||
void coreStopFinishesOwnerThread() {
|
||||
QTemporaryDir directory; QVERIFY(directory.isValid());
|
||||
const QString path = directory.filePath("node.cfg");
|
||||
QFile config(path); QVERIFY(config.open(QIODevice::WriteOnly));
|
||||
const QByteArray text = "[global]\n" + identity + "[chatserver]\ngroup_autoconnect=0\nstorage_autoload=0\n[ntp]\nenabled=no\n";
|
||||
QCOMPARE(config.write(text), text.size()); config.close();
|
||||
UtunNode node;
|
||||
node.setDbPath(directory.filePath("db")); node.setDebugFile(directory.filePath("node.log"));
|
||||
QSignalSpy stopped(&node, &UtunNode::stopped);
|
||||
QVERIFY(node.start(path));
|
||||
gui_bridge_post_uasync_fn([](void*) { utun_instance_stop(gui_bridge_get_inst()); }, nullptr);
|
||||
QTRY_COMPARE_WITH_TIMEOUT(stopped.count(), 1, 3000);
|
||||
node.stop();
|
||||
QVERIFY(!node.isRunning() && !node.instance() && !gui_bridge_get_inst() && !gui_bridge_is_uasync_ready());
|
||||
}
|
||||
|
||||
void tunFailureRejectsStartup() {
|
||||
QTemporaryDir directory; QVERIFY(directory.isValid());
|
||||
const QString path = directory.filePath("node.cfg");
|
||||
|
||||
@@ -279,9 +279,10 @@ void UtunNode::runLoop(std::promise<QString> startup) {
|
||||
cfg->global.tun_enabled, cfg->global.tun_ifname);
|
||||
startup.set_value(QString());
|
||||
|
||||
while (!m_stop) {
|
||||
while (!m_stop && m_instance->running) {
|
||||
uasync_poll(ua, 100);
|
||||
}
|
||||
if (!m_stop) DEBUG_ERROR(DEBUG_CATEGORY_SYS, "desktop core requested stop; releasing services outside callbacks");
|
||||
|
||||
gui_bridge_set_inst(nullptr);
|
||||
uasync_mark_stopped(ua);
|
||||
|
||||
Reference in new issue
Block a user