diff --git a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_Init.cpp b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_Init.cpp index 4495d1ecbdd..27fc9474bd5 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_Init.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_Init.cpp @@ -263,6 +263,14 @@ void NGMP_OnlineServicesManager::WaitForScreenshotThreads() void NGMP_OnlineServicesManager::Shutdown() { + // Shutdown HTTP manager FIRST to complete any pending requests + // This ensures all HTTP callbacks complete before we destroy other objects they might reference + if (m_pHTTPManager != nullptr) + { + m_pHTTPManager->Shutdown(); + } + + // Then shutdown WebSocket after HTTP callbacks have completed if (m_pWebSocket) { m_pWebSocket->Shutdown(); @@ -270,12 +278,6 @@ void NGMP_OnlineServicesManager::Shutdown() m_pWebSocket.reset(); } - // Then shutdown HTTP manager to complete any pending requests - if (m_pHTTPManager != nullptr) - { - m_pHTTPManager->Shutdown(); - } - // Finally shutdown Sentry ShutdownSentry();