diff --git a/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp b/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp index e3e3d485f9..8285784bc2 100644 --- a/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp +++ b/ApplicationLibCode/Application/Tools/Cloud/RiaCloudConnector.cpp @@ -133,6 +133,16 @@ RiaCloudConnector::RiaCloudConnector( QObject* parent, //-------------------------------------------------------------------------------------------------- RiaCloudConnector::~RiaCloudConnector() { + // Disconnect all signals to prevent callbacks during destruction + if ( m_authCodeFlow ) + { + m_authCodeFlow->disconnect(); + } + + if ( m_networkAccessManager ) + { + m_networkAccessManager->disconnect(); + } } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/Tools/Cloud/RiaOsduConnector.cpp b/ApplicationLibCode/Application/Tools/Cloud/RiaOsduConnector.cpp index 07bf835c72..cd64c8f900 100644 --- a/ApplicationLibCode/Application/Tools/Cloud/RiaOsduConnector.cpp +++ b/ApplicationLibCode/Application/Tools/Cloud/RiaOsduConnector.cpp @@ -54,6 +54,17 @@ RiaOsduConnector::RiaOsduConnector( QObject* parent, //-------------------------------------------------------------------------------------------------- RiaOsduConnector::~RiaOsduConnector() { + // Abort all pending network replies to prevent threading issues during destruction + QMutexLocker lock( &m_repliesMutex ); + for ( auto& [id, reply] : m_replies ) + { + if ( !reply.isNull() ) + { + reply->disconnect(); + reply->abort(); + } + } + m_replies.clear(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp b/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp index e54b62d2d9..b36ce71eeb 100644 --- a/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp +++ b/ApplicationLibCode/Application/Tools/Telemetry/RiaOpenTelemetryManager.cpp @@ -184,6 +184,12 @@ void RiaOpenTelemetryManager::shutdown() m_healthTimer->stop(); } + // Disconnect network manager to prevent callbacks during shutdown + if ( m_networkAccessManager ) + { + m_networkAccessManager->disconnect(); + } + // Flush pending events flushPendingEvents();