diff --git a/src/app_network.cpp b/src/app_network.cpp index 9dffb3b..a9b0e25 100644 --- a/src/app_network.cpp +++ b/src/app_network.cpp @@ -952,6 +952,13 @@ void App::onDisconnected(const std::string& reason) // the fast lane dead for the rest of the session — which silently stalls the opid poll // (its post() never runs, so a completed send spins on "Waiting for operation"). fast_worker_.reset(); + // stop() discards undrained MainCbs, and these in-progress flags are cleared only inside + // those callbacks (unlock/lock/PIN/encrypt are posted on the fast lane when it is running). + // Release them here so the lock screen cannot show "Unlocking..." forever; the user can retry + // after reconnect, and the real encryption state is re-read on connect. + lock_unlock_in_progress_ = false; + pin_in_progress_ = false; + encrypt_in_progress_ = false; } if (fast_rpc_) { fast_rpc_->disconnect();