From 511cd5c167e633bf0dbd1209eafd9b1e964c8b47 Mon Sep 17 00:00:00 2001 From: Fletcher Dunn Date: Tue, 13 Jul 2021 12:40:34 -0700 Subject: [PATCH] Fix shutdown order of operations bug causing assert P4:6666302 --- .../steamnetworkingsockets_lowlevel.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_lowlevel.cpp b/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_lowlevel.cpp index 4e5105f..580ed88 100644 --- a/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_lowlevel.cpp +++ b/src/steamnetworkingsockets/clientlib/steamnetworkingsockets_lowlevel.cpp @@ -2686,15 +2686,6 @@ void SteamNetworkingSocketsLowLevelDecRef() // might need to do stuff when we close a bunch of sockets (and WSACleanup) SteamNetworkingGlobalLock::SetLongLockWarningThresholdMS( "SteamNetworkingSocketsLowLevelDecRef", 500 ); - if ( s_vecRawSockets.IsEmpty() ) - { - s_vecRawSockets.Purge(); - } - else - { - AssertMsg( false, "Trying to close low level socket support, but we still have sockets open!" ); - } - // Stop the service thread, if we have one if ( s_pThreadSteamDatagram ) StopSteamDatagramThread(); @@ -2725,6 +2716,16 @@ void SteamNetworkingSocketsLowLevelDecRef() // Check for any leftover tasks that were queued to be run while we hold the lock ProcessDeferredOperations(); + // At this point, we shouldn't have any remaining sockets + if ( s_vecRawSockets.IsEmpty() ) + { + s_vecRawSockets.Purge(); + } + else + { + AssertMsg( false, "Trying to close low level socket support, but we still have sockets open!" ); + } + // Nuke packet lagger queues and make sure we are not registered to think s_packetLagQueueRecv.Clear(); s_packetLagQueueSend.Clear();