diff --git a/doc/contributions.txt b/doc/contributions.txt
index 0cdf37d72f0a779b1a2a52a02de1697025d0fd4b..b22ef1387098e96d2c462d84c65cbb05218f01a7 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -176,6 +176,8 @@ Ardy Lay
 	VWR-24917
 Argent Stonecutter
 	VWR-68
+ArminWeatherHax
+	STORM-1532
 Armin Weatherwax
 	VWR-8436
 ArminasX Saiman
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index 0db0010688369ee1f21417d407b42888b99148c1..56d71e96b3eb3a091571db4d6e7210bcef4246d4 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -4498,17 +4498,25 @@ bool LLVivoxVoiceClient::parcelVoiceInfoReceived(state requesting_state)
 
 bool LLVivoxVoiceClient::requestParcelVoiceInfo()
 {
-	LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL;
-
-	// grab the cap for parcel voice info from the region.  
 	LLViewerRegion * region = gAgent.getRegion();
-	if (region == NULL)
+	if (region == NULL || !region->capabilitiesReceived())
 	{
+		// we don't have the cap yet, so return false so the caller can try again later.
+
+		LL_DEBUGS("Voice") << "ParcelVoiceInfoRequest capability not yet available, deferring" << LL_ENDL;
 		return false;
 	}
+
 	// grab the cap.
 	std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest");
-	if (!url.empty())
+	if (url.empty())
+	{
+		// Region dosn't have the cap. Stop probing.
+		LL_DEBUGS("Voice") << "ParcelVoiceInfoRequest capability not available in this region" << LL_ENDL;
+		setState(stateDisableCleanup);
+		return false;
+	}
+	else 
 	{
 		// if we've already retrieved the cap from the region, go ahead and make the request,
 		// and return true so we can go into the state that waits for the response.
@@ -4517,18 +4525,11 @@ bool LLVivoxVoiceClient::requestParcelVoiceInfo()
 		LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL;
 		
 		LLHTTPClient::post(
-						   url,
-						   data,
-						   new LLVivoxVoiceClientCapResponder(getState()));
+						url,
+						data,
+						new LLVivoxVoiceClientCapResponder(getState()));
 		return true;
 	}
-	else 
-	{
-		
-		// we don't have the cap yet, so return false so the caller can try again later.
-		LL_DEBUGS("Voice") << "ParcelVoiceInfoRequest cap not yet available, deferring" << LL_ENDL;
-		return false;
-	}
 }
 
 void LLVivoxVoiceClient::switchChannel(