diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index e4d528ece5a30b5b61fffb937132b00c89b04896..e6da5c59395065b198ed96acb7bbdece200d3685 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -1880,13 +1880,22 @@ bool LLVivoxVoiceClient::waitForChannel()
                 break;
             }
 
-        } while (mVoiceEnabled && !mRelogRequested && !sShuttingDown);
+        } while (!sShuttingDown && mVoiceEnabled && !mRelogRequested);
 
-        LL_DEBUGS("Voice")
-            << "leaving inner waitForChannel loop"
-            << " RelogRequested=" << mRelogRequested
-            << " VoiceEnabled=" << mVoiceEnabled
-            << LL_ENDL;
+        if (!sShuttingDown)
+        {
+            LL_DEBUGS("Voice")
+                << "leaving inner waitForChannel loop"
+                << " RelogRequested=" << mRelogRequested
+                << " VoiceEnabled=" << mVoiceEnabled
+                << LL_ENDL;
+        }
+        else
+        {
+            // if sShuttingDown is set, we already logged out
+            LL_DEBUGS("Voice") << "leaving inner waitForChannel loop." << LL_ENDL;
+            return false;
+        }
 
         mIsProcessingChannels = false;
 
@@ -1902,7 +1911,7 @@ bool LLVivoxVoiceClient::waitForChannel()
                 return false;
             }
         }
-    } while (mVoiceEnabled && mRelogRequested && isGatewayRunning() && !sShuttingDown);
+    } while (!sShuttingDown && mVoiceEnabled && mRelogRequested && isGatewayRunning());
 
     LL_DEBUGS("Voice")
         << "exiting"