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.
This commit is contained in:
Levi Neely 2026-08-04 16:07:26 +02:00
parent 22302ce9f1
commit b4ae887089
1 changed files with 8 additions and 4 deletions

View File

@ -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();
}