diff --git a/OpenSim/Capabilities/LLSDParcelVoiceInfoResponse.cs b/OpenSim/Capabilities/LLSDParcelVoiceInfoResponse.cs deleted file mode 100644 index b34a6685c4..0000000000 --- a/OpenSim/Capabilities/LLSDParcelVoiceInfoResponse.cs +++ /dev/null @@ -1,51 +0,0 @@ -/* -* Copyright (c) Contributors, http://opensimulator.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of the OpenSimulator Project nor the -* names of its contributors may be used to endorse or promote products -* derived from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY -* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*/ - -using System.Collections; - -namespace OpenSim.Framework.Capabilities -{ - [OSDMap] - public class LLSDParcelVoiceInfoResponse - { - public int parcel_local_id; - public string region_name; - public Hashtable voice_credentials; - - public LLSDParcelVoiceInfoResponse() - { - } - - public LLSDParcelVoiceInfoResponse(string region, int localID, Hashtable creds) - { - region_name = region; - parcel_local_id = localID; - voice_credentials = creds; - } - } -} \ No newline at end of file diff --git a/OpenSim/Capabilities/LLSDVoiceAccountResponse.cs b/OpenSim/Capabilities/LLSDVoiceAccountResponse.cs deleted file mode 100644 index 53c11e7af2..0000000000 --- a/OpenSim/Capabilities/LLSDVoiceAccountResponse.cs +++ /dev/null @@ -1,57 +0,0 @@ -/* -* Copyright (c) Contributors, http://opensimulator.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of the OpenSimulator Project nor the -* names of its contributors may be used to endorse or promote products -* derived from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY -* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*/ - -namespace OpenSim.Framework.Capabilities -{ - [OSDMap] - public class LLSDVoiceAccountResponse - { - public string username; - public string password; - public string voice_sip_uri_hostname; - public string voice_account_server_name; - - public LLSDVoiceAccountResponse() - { - } - - public LLSDVoiceAccountResponse(string user, string pass) - { - username = user; - password = pass; - } - - public LLSDVoiceAccountResponse(string user, string pass, string sipUriHost, string accountServer) - { - username = user; - password = pass; - voice_sip_uri_hostname = sipUriHost; - voice_account_server_name = accountServer; - } - } -} \ No newline at end of file diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs index be1bd4f8ab..b0aad6f024 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs @@ -365,18 +365,17 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice } } - // LLSDVoiceAccountResponse voiceAccountResponse = - // new LLSDVoiceAccountResponse(agentname, password, m_freeSwitchRealm, "http://etsvc02.hursley.ibm.com/api"); - LLSDVoiceAccountResponse voiceAccountResponse = - new LLSDVoiceAccountResponse(agentname, password, m_freeSwitchRealm, - String.Format("http://{0}:{1}{2}/", m_openSimWellKnownHTTPAddress, - m_freeSwitchServicePort, m_freeSwitchAPIPrefix)); - - string r = LLSDHelpers.SerialiseLLSDReply(voiceAccountResponse); - -// m_log.DebugFormat("[FreeSwitchVoice][PROVISIONVOICE]: avatar \"{0}\": {1}", avatarName, r); - - return r; + string accounturl = String.Format("http://{0}:{1}{2}/", m_openSimWellKnownHTTPAddress, + m_freeSwitchServicePort, m_freeSwitchAPIPrefix); + // fast foward encode + StringBuilder lsl = LLSDxmlEncode.Start(512); + LLSDxmlEncode.AddMap(lsl); + LLSDxmlEncode.AddElem("username", agentname, lsl); + LLSDxmlEncode.AddElem("password", password, lsl); + LLSDxmlEncode.AddElem("voice_sip_uri_hostname", m_freeSwitchRealm, lsl); + LLSDxmlEncode.AddElem("voice_account_server_name", accounturl, lsl); + LLSDxmlEncode.AddEndMap(lsl); + return LLSDxmlEncode.End(lsl); } catch (Exception e) { @@ -414,7 +413,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice // - send channel_uri: as "sip:regionID@m_sipDomain" try { - LLSDParcelVoiceInfoResponse parcelVoiceInfo; string channelUri; if (null == scene.LandChannel) @@ -431,15 +429,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice // scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName, request, path, param); // TODO: EstateSettings don't seem to get propagated... - // if (!scene.RegionInfo.EstateSettings.AllowVoice) - // { - // m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": voice not enabled in estate settings", - // scene.RegionInfo.RegionName); - // channel_uri = String.Empty; - // } - // else + if (!scene.RegionInfo.EstateSettings.AllowVoice) + { + m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": voice not enabled in estate settings", + scene.RegionInfo.RegionName); + channelUri = String.Empty; + } + else - if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0) + if (!scene.RegionInfo.EstateSettings.TaxFree && (land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0) { // m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel", // scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName); @@ -450,16 +448,18 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice channelUri = ChannelUri(scene, land); } - // fill in our response to the client - Hashtable creds = new Hashtable(); - creds["channel_uri"] = channelUri; + // fast foward encode + StringBuilder lsl = LLSDxmlEncode.Start(512); + LLSDxmlEncode.AddMap(lsl); + LLSDxmlEncode.AddElem("parcel_local_id", land.LocalID, lsl); + LLSDxmlEncode.AddElem("region_name", scene.Name, lsl); + LLSDxmlEncode.AddMap("voice_credentials", lsl); + LLSDxmlEncode.AddElem("channel_uri", channelUri, lsl); + //LLSDxmlEncode.AddElem("channel_credentials", channel_credentials, lsl); + LLSDxmlEncode.AddEndMap(lsl); + LLSDxmlEncode.AddEndMap(lsl); - parcelVoiceInfo = new LLSDParcelVoiceInfoResponse(scene.RegionInfo.RegionName, land.LocalID, creds); - string r = LLSDHelpers.SerialiseLLSDReply(parcelVoiceInfo); - -// m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": {4}", -// scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName, r); - return r; + return LLSDxmlEncode.End(lsl); } catch (Exception e) {