From 86a46df4422e460c40c3d8d66417f1ccfe0af329 Mon Sep 17 00:00:00 2001 From: James Osborne Date: Wed, 6 May 2026 02:03:51 -0400 Subject: [PATCH] Treat proxy A0 lobby exit as intentional --- src/ProxyCommands.cc | 3 ++- src/ProxySession.hh | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index 8bc7b4ec..c05d7a5c 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -2230,6 +2230,7 @@ static asio::awaitable C_V123_A0(shared_ptr c, Channel::M // Change Ship from the lobby counter menu. We override the Change Ship action to end the proxy session, but we only // do so if the player is in a lobby in order to properly handle the download quest case. if (c->proxy_session->is_in_lobby) { + c->proxy_session->ending_intentionally = true; c->proxy_session->server_channel->disconnect(); co_return HandlerResult::SUPPRESS; } else { @@ -2847,7 +2848,7 @@ asio::awaitable handle_proxy_server_commands( // If this is the currently-active backend channel, treat the abort as a backend disconnect. // Normal Change Ship/Change Block reconnects replace ses->server_channel first; the old // aborted channel will not match here, so those expected aborts stay silent. - if ((c->proxy_session == ses) && (ses->server_channel == channel)) { + if ((c->proxy_session == ses) && (ses->server_channel == channel) && !ses->ending_intentionally) { error_str = "Server channel\ndisconnected"; } } else { diff --git a/src/ProxySession.hh b/src/ProxySession.hh index 0c65defd..5856fb30 100644 --- a/src/ProxySession.hh +++ b/src/ProxySession.hh @@ -16,6 +16,7 @@ struct ServerState; struct ProxySession { + bool ending_intentionally = false; static size_t num_proxy_sessions; std::shared_ptr server_channel;