Honor core stop in desktop owner loop and verify cleanup

This commit is contained in:
evgeny committed 2026-10-26 22:07:39 +01:00
1 parent 289b592598
commit c75bfc618a
2 files changed
+18 -1

No files matched your search

+16
View File
@@ -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");
+2 -1
View File
@@ -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);