diff options
author | Armin Weatherwax | 2011-12-25 13:15:21 +0100 |
---|---|---|
committer | Armin Weatherwax | 2011-12-25 13:15:21 +0100 |
commit | 89482e614a337069905a4f77300e280b3e19fe9e (patch) | |
tree | f5e815cc9ef2536f449b09844a2bcfa8b6f9aee1 /linden/indra/newview/llvoiceclient.cpp | |
parent | Linux: allow cross compiling the 32bit viewer on a x86_64 platform (diff) | |
download | meta-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 '')
-rw-r--r-- | linden/indra/newview/llvoiceclient.cpp | 12 |
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 | ||
1777 | void LLVoiceClient::start() | 1783 | void 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 | }; |