diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index f78a6edc80e869d8c77205685a0109bbbfffee47..503815e2eddd41292b34e978d4a27f8a4f132dc0 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -419,24 +419,36 @@ void LLVoiceClient::setNonSpatialChannel(
 	const std::string &uri,
 	const std::string &credentials)
 {
-	if (mVoiceModule) mVoiceModule->setNonSpatialChannel(uri, credentials);
+	if (mVoiceModule)
+    {
+        mVoiceModule->setNonSpatialChannel(uri, credentials);
+    }
 }
 
 void LLVoiceClient::setSpatialChannel(
 	const std::string &uri,
 	const std::string &credentials)
 {
-	if (mVoiceModule) mVoiceModule->setSpatialChannel(uri, credentials);
+	if (mVoiceModule)
+    {
+        mVoiceModule->setSpatialChannel(uri, credentials);
+    }
 }
 
 void LLVoiceClient::leaveNonSpatialChannel()
 {
-	if (mVoiceModule) mVoiceModule->leaveNonSpatialChannel();
+	if (mVoiceModule)
+    {
+        mVoiceModule->leaveNonSpatialChannel();
+    }
 }
 
 void LLVoiceClient::leaveChannel(void)
 {
-	if (mVoiceModule) mVoiceModule->leaveChannel();
+	if (mVoiceModule)
+    {
+        mVoiceModule->leaveChannel();
+    }
 }
 
 std::string LLVoiceClient::getCurrentChannel()
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index b13f9a22aa4cc704aeb5042e24f8e84fcef207ca..a7658fe0be1355107bea1325294a3dc406772160 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -1637,8 +1637,9 @@ bool LLVivoxVoiceClient::runSession(const sessionStatePtr_t &session)
         notifyStatusObservers(LLVoiceClientStatusObserver::ERROR_UNKNOWN);
 
         if (mSessionTerminateRequested)
+        {
             terminateAudioSession(true);
-
+        }
         // if a relog has been requested then addAndJoineSession 
         // failed in a spectacular way and we need to back out.
         // If this is not the case then we were simply trying to
@@ -2645,9 +2646,16 @@ static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVe
 void LLVivoxVoiceClient::setHidden(bool hidden)
 {
     mHidden = hidden;
-    
-    sendPositionAndVolumeUpdate();
-    return;
+
+    if (mHidden && inSpatialChannel())
+    {
+        // get out of the channel entirely 
+        leaveAudioSession();
+    }
+    else
+    {
+        sendPositionAndVolumeUpdate();
+    }
 }
 
 void LLVivoxVoiceClient::sendPositionAndVolumeUpdate(void)
@@ -2863,7 +2871,7 @@ void LLVivoxVoiceClient::sendPositionAndVolumeUpdate(void)
 			}
 		}
 	}
-			
+
 	//sendLocalAudioUpdates();  obsolete, used to send volume setting on position updates
     std::string update(stream.str());
 	if(!update.empty())
@@ -4768,8 +4776,10 @@ bool LLVivoxVoiceClient::inSpatialChannel(void)
 	bool result = false;
 	
 	if(mAudioSession)
+    {
 		result = mAudioSession->mIsSpatial;
-		
+    }
+    
 	return result;
 }