From b4ae887089d30ff9217aab0b6abd1bc24231a7fb Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Tue, 4 Aug 2026 16:07:26 +0200 Subject: [PATCH] ninepconnection: emit disconnected when leaving Connected state Previously disconnected was only emitted when entering Disconnected state, not when transitioning Connected->RetryWait. This caused Lib9pClient to keep a stale handle when olliesrv restarted, preventing reconnection. --- gui/ninepconnection.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gui/ninepconnection.cpp b/gui/ninepconnection.cpp index 50fafb4..b0449d8 100644 --- a/gui/ninepconnection.cpp +++ b/gui/ninepconnection.cpp @@ -9,12 +9,16 @@ * Disconnected | EvStart | | Connecting | spawnProcess * Connecting | EvOpenMarker | | Connected | emit connected * Connecting | EvExitFail | canRetry | RetryWait | scheduleRetry - * Connecting | EvExitFail | !canRetry | Disconnected | emit disconnected + * Connecting | EvExitFail | !canRetry | Disconnected | * Connected | EvExitOk | | Connected | scheduleRetry (silent) - * Connected | EvExitFail | canRetry | RetryWait | scheduleRetry + * Connected | EvExitFail | canRetry | RetryWait | emit disconnected, scheduleRetry * Connected | EvExitFail | !canRetry | Disconnected | emit disconnected * RetryWait | EvRetryTimer | | Connecting | spawnProcess - * Any | EvStop | | Disconnected | killProcess, emit disconnected + * Any | EvStop | | Disconnected | killProcess, emit disconnected (if was Connected) + * + * Signals: + * - connected: emitted when entering Connected from any other state + * - disconnected: emitted when leaving Connected for any other state */ NinePConnection::NinePConnection(QObject *parent) @@ -117,7 +121,7 @@ void NinePConnection::enter(State state) if (state == Connected && prev != Connected) emit connected(); - else if (state == Disconnected && prev != Disconnected) + else if (prev == Connected && state != Connected) emit disconnected(); }