aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
authorArmin Weatherwax2011-12-25 13:15:21 +0100
committerArmin Weatherwax2011-12-25 13:15:21 +0100
commit89482e614a337069905a4f77300e280b3e19fe9e (patch)
treef5e815cc9ef2536f449b09844a2bcfa8b6f9aee1 /linden
parentLinux: allow cross compiling the 32bit viewer on a x86_64 platform (diff)
downloadmeta-impy-89482e614a337069905a4f77300e280b3e19fe9e.zip
meta-impy-89482e614a337069905a4f77300e280b3e19fe9e.tar.gz
meta-impy-89482e614a337069905a4f77300e280b3e19fe9e.tar.bz2
meta-impy-89482e614a337069905a4f77300e280b3e19fe9e.tar.xz
disable voice if ParcelVoiceInfoRequest response is malformed.
Seen (empty LLSD) in OSGrid Mumble Sandbox. Without a "voice_credentials" key the client never connects to the server, but would retry in vain to do so. Note to OpenSim devs: the "channel_uri" of the ParcelVoiceInfoRequest response is parsed to identify if we are connecting to a mumble server on parcel change. The presence of "sip:" within the uri is interpreted as connecting to vivox/freeswitch, the absence as connecting to a mumble server. However it would be much better to add a "server_type" key to the response, which could hold a string like "mumble", "freeswitch", etc - the absence would indicate connecting to a legacy(like) voice server. Additional note: to detect a mumble server also of the VoiceAccountProvision response the voice_account_server_uri is parsed: If the uri starts with tcp:// the "mumble" client is loaded(by default, you can change it in the "VoiceModuleMumble" debug setting), for any other scheme "SLVoice" (default, "VoiceModuleVivox" debug setting).
Diffstat (limited to 'linden')
-rw-r--r--linden/indra/newview/llvoiceclient.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index 07d2fa9..3cf15fc 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -1051,6 +1051,11 @@ void LLVoiceClientCapResponder::result(const LLSD& content)
1051 1051
1052 gVoiceClient->setSpatialChannel(uri, credentials, mResponseID); 1052 gVoiceClient->setSpatialChannel(uri, credentials, mResponseID);
1053 } 1053 }
1054 else
1055 {
1056 llwarns << "ParcelVoiceInfoRequest response malformed, disabling voice." << llendl;
1057 gVoiceClient->close();
1058 }
1054} 1059}
1055 1060
1056 1061
@@ -1771,11 +1776,13 @@ void LLVoiceClient::close()
1771{ 1776{
1772 LL_DEBUGS("VoiceSession") << "Cancel Session: LLVoiceClient::close() called." 1777 LL_DEBUGS("VoiceSession") << "Cancel Session: LLVoiceClient::close() called."
1773 << llendl; 1778 << llendl;
1779 mAccountActive = false;
1774 setState(stateDisableCleanup); 1780 setState(stateDisableCleanup);
1775} 1781}
1776 1782
1777void LLVoiceClient::start() 1783void LLVoiceClient::start()
1778{ 1784{
1785 mAccountActive = true;
1779 setState(stateStart); 1786 setState(stateStart);
1780} 1787}
1781 1788
@@ -7207,6 +7214,11 @@ class LLViewerParcelVoiceInfo : public LLHTTPNode
7207 gVoiceClient->setPIRCapResponseID(response_id); 7214 gVoiceClient->setPIRCapResponseID(response_id);
7208 gVoiceClient->setSpatialChannel(uri, credentials, response_id); 7215 gVoiceClient->setSpatialChannel(uri, credentials, response_id);
7209 } 7216 }
7217 else
7218 {
7219 llwarns << "ParcelVoiceInfoRequest response malformed, disabling voice." << llendl;
7220 gVoiceClient->close();
7221 }
7210 } 7222 }
7211 } 7223 }
7212}; 7224};