diff options
Diffstat (limited to '')
8 files changed, 182 insertions, 80 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index ccec9b7..ba89e21 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | |||
@@ -430,7 +430,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
430 | string path = request.RawUrl; | 430 | string path = request.RawUrl; |
431 | string handlerKey = GetHandlerKey(request.HttpMethod, path); | 431 | string handlerKey = GetHandlerKey(request.HttpMethod, path); |
432 | 432 | ||
433 | //m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path); | 433 | // m_log.DebugFormat("[BASE HTTP SERVER]: Handling {0} request for {1}", request.HttpMethod, path); |
434 | 434 | ||
435 | if (TryGetStreamHandler(handlerKey, out requestHandler)) | 435 | if (TryGetStreamHandler(handlerKey, out requestHandler)) |
436 | { | 436 | { |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs index e8095c0..4bca3d0 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs | |||
@@ -81,16 +81,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
81 | } | 81 | } |
82 | 82 | ||
83 | /// <summary> | 83 | /// <summary> |
84 | /// Add an inventory item to a prim in this group. | 84 | /// Add an inventory item from a user's inventory to a prim in this scene object. |
85 | /// </summary> | 85 | /// </summary> |
86 | /// <param name="remoteClient"></param> | 86 | /// <param name="remoteClient">The client adding the item.</param> |
87 | /// <param name="localID"></param> | 87 | /// <param name="localID">The local ID of the part receiving the add.</param> |
88 | /// <param name="item"></param> | 88 | /// <param name="item">The user inventory item being added.</param> |
89 | /// <param name="copyItemID">The item UUID that should be used by the new item.</param> | 89 | /// <param name="copyItemID">The item UUID that should be used by the new item.</param> |
90 | /// <returns></returns> | 90 | /// <returns></returns> |
91 | public bool AddInventoryItem(IClientAPI remoteClient, uint localID, | 91 | public bool AddInventoryItem(IClientAPI remoteClient, uint localID, |
92 | InventoryItemBase item, UUID copyItemID) | 92 | InventoryItemBase item, UUID copyItemID) |
93 | { | 93 | { |
94 | // m_log.DebugFormat( | ||
95 | // "[PRIM INVENTORY]: Adding inventory item {0} from {1} to part with local ID {2}", | ||
96 | // item.Name, remoteClient.Name, localID); | ||
97 | |||
94 | UUID newItemId = (copyItemID != UUID.Zero) ? copyItemID : item.ID; | 98 | UUID newItemId = (copyItemID != UUID.Zero) ? copyItemID : item.ID; |
95 | 99 | ||
96 | SceneObjectPart part = GetChildPart(localID); | 100 | SceneObjectPart part = GetChildPart(localID); |
@@ -132,15 +136,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
132 | taskItem.GroupPermissions = item.GroupPermissions; | 136 | taskItem.GroupPermissions = item.GroupPermissions; |
133 | taskItem.NextPermissions = item.NextPermissions; | 137 | taskItem.NextPermissions = item.NextPermissions; |
134 | } | 138 | } |
135 | 139 | ||
136 | taskItem.Flags = item.Flags; | 140 | taskItem.Flags = item.Flags; |
141 | |||
142 | // m_log.DebugFormat( | ||
143 | // "[PRIM INVENTORY]: Flags are 0x{0:X} for item {1} added to part {2} by {3}", | ||
144 | // taskItem.Flags, taskItem.Name, localID, remoteClient.Name); | ||
145 | |||
137 | // TODO: These are pending addition of those fields to TaskInventoryItem | 146 | // TODO: These are pending addition of those fields to TaskInventoryItem |
138 | // taskItem.SalePrice = item.SalePrice; | 147 | // taskItem.SalePrice = item.SalePrice; |
139 | // taskItem.SaleType = item.SaleType; | 148 | // taskItem.SaleType = item.SaleType; |
140 | taskItem.CreationDate = (uint)item.CreationDate; | 149 | taskItem.CreationDate = (uint)item.CreationDate; |
141 | 150 | ||
142 | bool addFromAllowedDrop = false; | 151 | bool addFromAllowedDrop = false; |
143 | if (remoteClient!=null) | 152 | if (remoteClient != null) |
144 | { | 153 | { |
145 | addFromAllowedDrop = remoteClient.AgentId != part.OwnerID; | 154 | addFromAllowedDrop = remoteClient.AgentId != part.OwnerID; |
146 | } | 155 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs index babcb54..55455cc 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs | |||
@@ -117,29 +117,40 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
117 | { | 117 | { |
118 | using (XmlTextReader reader = new XmlTextReader(sr)) | 118 | using (XmlTextReader reader = new XmlTextReader(sr)) |
119 | { | 119 | { |
120 | reader.Read(); | 120 | try |
121 | if (reader.Name != "CoalescedObject") | ||
122 | { | 121 | { |
123 | // m_log.DebugFormat( | 122 | reader.Read(); |
124 | // "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false", | 123 | if (reader.Name != "CoalescedObject") |
125 | // reader.Name); | 124 | { |
125 | // m_log.DebugFormat( | ||
126 | // "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false", | ||
127 | // reader.Name); | ||
128 | |||
129 | return false; | ||
130 | } | ||
126 | 131 | ||
127 | return false; | 132 | coa = new CoalescedSceneObjects(UUID.Zero); |
128 | } | 133 | reader.Read(); |
129 | 134 | ||
130 | coa = new CoalescedSceneObjects(UUID.Zero); | 135 | while (reader.NodeType != XmlNodeType.EndElement && reader.Name != "CoalescedObject") |
131 | reader.Read(); | ||
132 | |||
133 | while (reader.NodeType != XmlNodeType.EndElement && reader.Name != "CoalescedObject") | ||
134 | { | ||
135 | if (reader.Name == "SceneObjectGroup") | ||
136 | { | 136 | { |
137 | string soXml = reader.ReadOuterXml(); | 137 | if (reader.Name == "SceneObjectGroup") |
138 | coa.Add(SceneObjectSerializer.FromOriginalXmlFormat(soXml)); | 138 | { |
139 | string soXml = reader.ReadOuterXml(); | ||
140 | coa.Add(SceneObjectSerializer.FromOriginalXmlFormat(soXml)); | ||
141 | } | ||
139 | } | 142 | } |
143 | |||
144 | reader.ReadEndElement(); // CoalescedObject | ||
140 | } | 145 | } |
141 | 146 | catch (Exception e) | |
142 | reader.ReadEndElement(); // CoalescedObject | 147 | { |
148 | m_log.ErrorFormat( | ||
149 | "[COALESCED SCENE OBJECTS SERIALIZER]: Deserialization of xml failed with {0} {1}", | ||
150 | e.Message, e.StackTrace); | ||
151 | |||
152 | return false; | ||
153 | } | ||
143 | } | 154 | } |
144 | } | 155 | } |
145 | 156 | ||
diff --git a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs index 83906d7..77b1535 100644 --- a/OpenSim/Region/Framework/Scenes/UuidGatherer.cs +++ b/OpenSim/Region/Framework/Scenes/UuidGatherer.cs | |||
@@ -298,10 +298,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
298 | if (null != objectAsset) | 298 | if (null != objectAsset) |
299 | { | 299 | { |
300 | string xml = Utils.BytesToString(objectAsset.Data); | 300 | string xml = Utils.BytesToString(objectAsset.Data); |
301 | SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml); | 301 | |
302 | 302 | CoalescedSceneObjects coa; | |
303 | if (null != sog) | 303 | if (CoalescedSceneObjectsSerializer.TryFromXml(xml, out coa)) |
304 | GatherAssetUuids(sog, assetUuids); | 304 | { |
305 | foreach (SceneObjectGroup sog in coa.Objects) | ||
306 | GatherAssetUuids(sog, assetUuids); | ||
307 | } | ||
308 | else | ||
309 | { | ||
310 | SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml); | ||
311 | |||
312 | if (null != sog) | ||
313 | GatherAssetUuids(sog, assetUuids); | ||
314 | } | ||
305 | } | 315 | } |
306 | } | 316 | } |
307 | 317 | ||
diff --git a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs index 7909d8a..42efd67 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Voice/FreeSwitchVoice/FreeSwitchVoiceModule.cs | |||
@@ -118,7 +118,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
118 | 118 | ||
119 | if (serviceDll == String.Empty) | 119 | if (serviceDll == String.Empty) |
120 | { | 120 | { |
121 | m_log.Error("[FreeSwitchVoice]: No LocalServiceModule named in section FreeSwitchVoice"); | 121 | m_log.Error("[FreeSwitchVoice]: No LocalServiceModule named in section FreeSwitchVoice. Not starting."); |
122 | return; | 122 | return; |
123 | } | 123 | } |
124 | 124 | ||
@@ -143,8 +143,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
143 | if (String.IsNullOrEmpty(m_freeSwitchRealm) || | 143 | if (String.IsNullOrEmpty(m_freeSwitchRealm) || |
144 | String.IsNullOrEmpty(m_freeSwitchAPIPrefix)) | 144 | String.IsNullOrEmpty(m_freeSwitchAPIPrefix)) |
145 | { | 145 | { |
146 | m_log.Error("[FreeSwitchVoice] plugin mis-configured"); | 146 | m_log.Error("[FreeSwitchVoice]: Freeswitch service mis-configured. Not starting."); |
147 | m_log.Info("[FreeSwitchVoice] plugin disabled: incomplete configuration"); | ||
148 | return; | 147 | return; |
149 | } | 148 | } |
150 | 149 | ||
@@ -164,24 +163,24 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
164 | // String.Format("{0}/viv_get_prelogin.php", m_freeSwitchAPIPrefix), FreeSwitchSLVoiceGetPreloginHTTPHandler); | 163 | // String.Format("{0}/viv_get_prelogin.php", m_freeSwitchAPIPrefix), FreeSwitchSLVoiceGetPreloginHTTPHandler); |
165 | // MainServer.Instance.AddStreamHandler(h); | 164 | // MainServer.Instance.AddStreamHandler(h); |
166 | 165 | ||
167 | |||
168 | |||
169 | MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_signin.php", m_freeSwitchAPIPrefix), | 166 | MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_signin.php", m_freeSwitchAPIPrefix), |
170 | FreeSwitchSLVoiceSigninHTTPHandler); | 167 | FreeSwitchSLVoiceSigninHTTPHandler); |
171 | 168 | ||
172 | MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_buddy.php", m_freeSwitchAPIPrefix), | 169 | MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_buddy.php", m_freeSwitchAPIPrefix), |
173 | FreeSwitchSLVoiceBuddyHTTPHandler); | 170 | FreeSwitchSLVoiceBuddyHTTPHandler); |
171 | |||
172 | MainServer.Instance.AddHTTPHandler(String.Format("{0}/viv_watcher.php", m_freeSwitchAPIPrefix), | ||
173 | FreeSwitchSLVoiceWatcherHTTPHandler); | ||
174 | 174 | ||
175 | m_log.InfoFormat("[FreeSwitchVoice] using FreeSwitch server {0}", m_freeSwitchRealm); | 175 | m_log.InfoFormat("[FreeSwitchVoice]: using FreeSwitch server {0}", m_freeSwitchRealm); |
176 | 176 | ||
177 | m_Enabled = true; | 177 | m_Enabled = true; |
178 | 178 | ||
179 | m_log.Info("[FreeSwitchVoice] plugin enabled"); | 179 | m_log.Info("[FreeSwitchVoice]: plugin enabled"); |
180 | } | 180 | } |
181 | catch (Exception e) | 181 | catch (Exception e) |
182 | { | 182 | { |
183 | m_log.ErrorFormat("[FreeSwitchVoice] plugin initialization failed: {0}", e.Message); | 183 | m_log.ErrorFormat("[FreeSwitchVoice]: plugin initialization failed: {0} {1}", e.Message, e.StackTrace); |
184 | m_log.DebugFormat("[FreeSwitchVoice] plugin initialization failed: {0}", e.ToString()); | ||
185 | return; | 184 | return; |
186 | } | 185 | } |
187 | 186 | ||
@@ -240,7 +239,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
240 | { | 239 | { |
241 | if (m_Enabled) | 240 | if (m_Enabled) |
242 | { | 241 | { |
243 | m_log.Info("[FreeSwitchVoice] registering IVoiceModule with the scene"); | 242 | m_log.Info("[FreeSwitchVoice]: registering IVoiceModule with the scene"); |
244 | 243 | ||
245 | // register the voice interface for this module, so the script engine can call us | 244 | // register the voice interface for this module, so the script engine can call us |
246 | scene.RegisterModuleInterface<IVoiceModule>(this); | 245 | scene.RegisterModuleInterface<IVoiceModule>(this); |
@@ -302,7 +301,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
302 | // </summary> | 301 | // </summary> |
303 | public void OnRegisterCaps(Scene scene, UUID agentID, Caps caps) | 302 | public void OnRegisterCaps(Scene scene, UUID agentID, Caps caps) |
304 | { | 303 | { |
305 | m_log.DebugFormat("[FreeSwitchVoice] OnRegisterCaps: agentID {0} caps {1}", agentID, caps); | 304 | m_log.DebugFormat( |
305 | "[FreeSwitchVoice]: OnRegisterCaps() called with agentID {0} caps {1} in scene {2}", | ||
306 | agentID, caps, scene.RegionInfo.RegionName); | ||
306 | 307 | ||
307 | string capsBase = "/CAPS/" + caps.CapsObjectPath; | 308 | string capsBase = "/CAPS/" + caps.CapsObjectPath; |
308 | caps.RegisterHandler("ProvisionVoiceAccountRequest", | 309 | caps.RegisterHandler("ProvisionVoiceAccountRequest", |
@@ -344,6 +345,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
344 | public string ProvisionVoiceAccountRequest(Scene scene, string request, string path, string param, | 345 | public string ProvisionVoiceAccountRequest(Scene scene, string request, string path, string param, |
345 | UUID agentID, Caps caps) | 346 | UUID agentID, Caps caps) |
346 | { | 347 | { |
348 | m_log.DebugFormat( | ||
349 | "[FreeSwitchVoice][PROVISIONVOICE]: ProvisionVoiceAccountRequest() request: {0}, path: {1}, param: {2}", request, path, param); | ||
350 | |||
347 | ScenePresence avatar = scene.GetScenePresence(agentID); | 351 | ScenePresence avatar = scene.GetScenePresence(agentID); |
348 | if (avatar == null) | 352 | if (avatar == null) |
349 | { | 353 | { |
@@ -357,9 +361,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
357 | 361 | ||
358 | try | 362 | try |
359 | { | 363 | { |
360 | //m_log.DebugFormat("[FreeSwitchVoice][PROVISIONVOICE]: request: {0}, path: {1}, param: {2}", | ||
361 | // request, path, param); | ||
362 | |||
363 | //XmlElement resp; | 364 | //XmlElement resp; |
364 | string agentname = "x" + Convert.ToBase64String(agentID.GetBytes()); | 365 | string agentname = "x" + Convert.ToBase64String(agentID.GetBytes()); |
365 | string password = "1234";//temp hack//new UUID(Guid.NewGuid()).ToString().Replace('-','Z').Substring(0,16); | 366 | string password = "1234";//temp hack//new UUID(Guid.NewGuid()).ToString().Replace('-','Z').Substring(0,16); |
@@ -390,7 +391,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
390 | 391 | ||
391 | string r = LLSDHelpers.SerialiseLLSDReply(voiceAccountResponse); | 392 | string r = LLSDHelpers.SerialiseLLSDReply(voiceAccountResponse); |
392 | 393 | ||
393 | m_log.DebugFormat("[FreeSwitchVoice][PROVISIONVOICE]: avatar \"{0}\": {1}", avatarName, r); | 394 | // m_log.DebugFormat("[FreeSwitchVoice][PROVISIONVOICE]: avatar \"{0}\": {1}", avatarName, r); |
394 | 395 | ||
395 | return r; | 396 | return r; |
396 | } | 397 | } |
@@ -416,6 +417,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
416 | public string ParcelVoiceInfoRequest(Scene scene, string request, string path, string param, | 417 | public string ParcelVoiceInfoRequest(Scene scene, string request, string path, string param, |
417 | UUID agentID, Caps caps) | 418 | UUID agentID, Caps caps) |
418 | { | 419 | { |
420 | // m_log.DebugFormat( | ||
421 | // "[FreeSwitchVoice][PARCELVOICE]: ParcelVoiceInfoRequest() on {0} for {1}", | ||
422 | // scene.RegionInfo.RegionName, agentID); | ||
423 | |||
419 | ScenePresence avatar = scene.GetScenePresence(agentID); | 424 | ScenePresence avatar = scene.GetScenePresence(agentID); |
420 | string avatarName = avatar.Name; | 425 | string avatarName = avatar.Name; |
421 | 426 | ||
@@ -453,8 +458,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
453 | 458 | ||
454 | if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0) | 459 | if ((land.Flags & (uint)ParcelFlags.AllowVoiceChat) == 0) |
455 | { | 460 | { |
456 | m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel", | 461 | // m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": voice not enabled for parcel", |
457 | scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName); | 462 | // scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName); |
458 | channelUri = String.Empty; | 463 | channelUri = String.Empty; |
459 | } | 464 | } |
460 | else | 465 | else |
@@ -469,8 +474,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
469 | parcelVoiceInfo = new LLSDParcelVoiceInfoResponse(scene.RegionInfo.RegionName, land.LocalID, creds); | 474 | parcelVoiceInfo = new LLSDParcelVoiceInfoResponse(scene.RegionInfo.RegionName, land.LocalID, creds); |
470 | string r = LLSDHelpers.SerialiseLLSDReply(parcelVoiceInfo); | 475 | string r = LLSDHelpers.SerialiseLLSDReply(parcelVoiceInfo); |
471 | 476 | ||
472 | m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": {4}", | 477 | // m_log.DebugFormat("[FreeSwitchVoice][PARCELVOICE]: region \"{0}\": Parcel \"{1}\" ({2}): avatar \"{3}\": {4}", |
473 | scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName, r); | 478 | // scene.RegionInfo.RegionName, land.Name, land.LocalID, avatarName, r); |
474 | return r; | 479 | return r; |
475 | } | 480 | } |
476 | catch (Exception e) | 481 | catch (Exception e) |
@@ -502,6 +507,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
502 | 507 | ||
503 | m_log.DebugFormat("[FreeSwitchVoice][CHATSESSION]: avatar \"{0}\": request: {1}, path: {2}, param: {3}", | 508 | m_log.DebugFormat("[FreeSwitchVoice][CHATSESSION]: avatar \"{0}\": request: {1}, path: {2}, param: {3}", |
504 | avatarName, request, path, param); | 509 | avatarName, request, path, param); |
510 | |||
505 | return "<llsd>true</llsd>"; | 511 | return "<llsd>true</llsd>"; |
506 | } | 512 | } |
507 | 513 | ||
@@ -555,10 +561,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
555 | return response; | 561 | return response; |
556 | } | 562 | } |
557 | 563 | ||
558 | |||
559 | public Hashtable FreeSwitchSLVoiceGetPreloginHTTPHandler(Hashtable request) | 564 | public Hashtable FreeSwitchSLVoiceGetPreloginHTTPHandler(Hashtable request) |
560 | { | 565 | { |
561 | m_log.Debug("[FreeSwitchVoice] FreeSwitchSLVoiceGetPreloginHTTPHandler called"); | 566 | m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceGetPreloginHTTPHandler called"); |
562 | 567 | ||
563 | Hashtable response = new Hashtable(); | 568 | Hashtable response = new Hashtable(); |
564 | response["content_type"] = "text/xml"; | 569 | response["content_type"] = "text/xml"; |
@@ -592,6 +597,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
592 | 597 | ||
593 | public Hashtable FreeSwitchSLVoiceBuddyHTTPHandler(Hashtable request) | 598 | public Hashtable FreeSwitchSLVoiceBuddyHTTPHandler(Hashtable request) |
594 | { | 599 | { |
600 | m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceBuddyHTTPHandler called"); | ||
601 | |||
595 | Hashtable response = new Hashtable(); | 602 | Hashtable response = new Hashtable(); |
596 | response["int_response_code"] = 200; | 603 | response["int_response_code"] = 200; |
597 | response["str_response_string"] = string.Empty; | 604 | response["str_response_string"] = string.Empty; |
@@ -650,21 +657,64 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
650 | <bdy_status>A</bdy_status> | 657 | <bdy_status>A</bdy_status> |
651 | <modified_ts>{3}</modified_ts> | 658 | <modified_ts>{3}</modified_ts> |
652 | <b2g_group_id></b2g_group_id> | 659 | <b2g_group_id></b2g_group_id> |
653 | </level3>", ids[i],i,m_freeSwitchRealm,dt)); | 660 | </level3>", ids[i], i ,m_freeSwitchRealm, dt)); |
654 | } | 661 | } |
655 | 662 | ||
656 | resp.Append("</buddies><groups></groups></body></level0></response>"); | 663 | resp.Append("</buddies><groups></groups></body></level0></response>"); |
657 | 664 | ||
658 | response["str_response_string"] = resp.ToString(); | 665 | response["str_response_string"] = resp.ToString(); |
659 | // Regex normalizeEndLines = new Regex(@"\r\n", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline); | 666 | // Regex normalizeEndLines = new Regex(@"(\r\n|\n)", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline); |
660 | 667 | // | |
661 | //m_log.DebugFormat("[FREESWITCH]: {0}", normalizeEndLines.Replace((string)response["str_response_string"],"")); | 668 | // m_log.DebugFormat( |
669 | // "[FREESWITCH]: FreeSwitchSLVoiceBuddyHTTPHandler() response {0}", | ||
670 | // normalizeEndLines.Replace((string)response["str_response_string"],"")); | ||
671 | |||
662 | return response; | 672 | return response; |
663 | } | 673 | } |
664 | 674 | ||
675 | public Hashtable FreeSwitchSLVoiceWatcherHTTPHandler(Hashtable request) | ||
676 | { | ||
677 | m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceWatcherHTTPHandler called"); | ||
678 | |||
679 | Hashtable response = new Hashtable(); | ||
680 | response["int_response_code"] = 200; | ||
681 | response["content-type"] = "text/xml"; | ||
682 | |||
683 | Hashtable requestBody = ParseRequestBody((string)request["body"]); | ||
684 | |||
685 | string auth_token = (string)requestBody["auth_token"]; | ||
686 | //string[] auth_tokenvals = auth_token.Split(':'); | ||
687 | //string username = auth_tokenvals[0]; | ||
688 | |||
689 | StringBuilder resp = new StringBuilder(); | ||
690 | resp.Append("<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?><response xmlns=\"http://www.vivox.com\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation= \"/xsd/buddy_list.xsd\">"); | ||
691 | |||
692 | // FIXME: This is enough of a response to stop viewer 2 complaining about a login failure and get voice to work. If we don't | ||
693 | // give an OK response, then viewer 2 engages in an continuous viv_signin.php, viv_buddy.php, viv_watcher.php loop | ||
694 | // Viewer 1 appeared happy to ignore the lack of reply and still works with this reply. | ||
695 | // | ||
696 | // However, really we need to fill in whatever watcher data should be here (whatever that is). | ||
697 | resp.Append(string.Format(@"<level0> | ||
698 | <status>OK</status> | ||
699 | <cookie_name>lib_session</cookie_name> | ||
700 | <cookie>{0}</cookie> | ||
701 | <auth_token>{0}</auth_token> | ||
702 | <body/></level0></response>", auth_token)); | ||
703 | |||
704 | response["str_response_string"] = resp.ToString(); | ||
705 | |||
706 | // Regex normalizeEndLines = new Regex(@"(\r\n|\n)", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.Multiline); | ||
707 | // | ||
708 | // m_log.DebugFormat( | ||
709 | // "[FREESWITCH]: FreeSwitchSLVoiceWatcherHTTPHandler() response {0}", | ||
710 | // normalizeEndLines.Replace((string)response["str_response_string"],"")); | ||
711 | |||
712 | return response; | ||
713 | } | ||
714 | |||
665 | public Hashtable FreeSwitchSLVoiceSigninHTTPHandler(Hashtable request) | 715 | public Hashtable FreeSwitchSLVoiceSigninHTTPHandler(Hashtable request) |
666 | { | 716 | { |
667 | m_log.Debug("[FreeSwitchVoice] FreeSwitchSLVoiceSigninHTTPHandler called"); | 717 | m_log.Debug("[FreeSwitchVoice]: FreeSwitchSLVoiceSigninHTTPHandler called"); |
668 | // string requestbody = (string)request["body"]; | 718 | // string requestbody = (string)request["body"]; |
669 | // string uri = (string)request["uri"]; | 719 | // string uri = (string)request["uri"]; |
670 | // string contenttype = (string)request["content-type"]; | 720 | // string contenttype = (string)request["content-type"]; |
@@ -709,7 +759,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
709 | </level0> | 759 | </level0> |
710 | </response>", userid, pos, avatarName); | 760 | </response>", userid, pos, avatarName); |
711 | 761 | ||
712 | response["int_response_code"] = 200; | 762 | response["int_response_code"] = 200; |
763 | |||
764 | // m_log.DebugFormat("[FreeSwitchVoice]: Sending FreeSwitchSLVoiceSigninHTTPHandler response"); | ||
765 | |||
713 | return response; | 766 | return response; |
714 | } | 767 | } |
715 | 768 | ||
@@ -795,16 +848,27 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
795 | response["keepalive"] = false; | 848 | response["keepalive"] = false; |
796 | response["int_response_code"] = 500; | 849 | response["int_response_code"] = 500; |
797 | 850 | ||
798 | Hashtable requestBody = ParseRequestBody((string) request["body"]); | 851 | Hashtable requestBody = ParseRequestBody((string)request["body"]); |
799 | 852 | ||
800 | string section = (string) requestBody["section"]; | 853 | string section = (string) requestBody["section"]; |
801 | 854 | ||
802 | if (section == "directory") | 855 | if (section == "directory") |
856 | { | ||
857 | string eventCallingFunction = (string)requestBody["Event-Calling-Function"]; | ||
858 | m_log.DebugFormat( | ||
859 | "[FreeSwitchVoice]: Received request for config section directory, event calling function '{0}'", | ||
860 | eventCallingFunction); | ||
861 | |||
803 | response = m_FreeswitchService.HandleDirectoryRequest(requestBody); | 862 | response = m_FreeswitchService.HandleDirectoryRequest(requestBody); |
863 | } | ||
804 | else if (section == "dialplan") | 864 | else if (section == "dialplan") |
865 | { | ||
866 | m_log.DebugFormat("[FreeSwitchVoice]: Received request for config section dialplan"); | ||
867 | |||
805 | response = m_FreeswitchService.HandleDialplanRequest(requestBody); | 868 | response = m_FreeswitchService.HandleDialplanRequest(requestBody); |
869 | } | ||
806 | else | 870 | else |
807 | m_log.WarnFormat("[FreeSwitchVoice]: section was {0}", section); | 871 | m_log.WarnFormat("[FreeSwitchVoice]: Unknown section {0} was requested from config.", section); |
808 | 872 | ||
809 | return response; | 873 | return response; |
810 | } | 874 | } |
@@ -821,4 +885,4 @@ namespace OpenSim.Region.OptionalModules.Avatar.Voice.FreeSwitchVoice | |||
821 | 885 | ||
822 | #endregion | 886 | #endregion |
823 | } | 887 | } |
824 | } | 888 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/Meshing/SculptMap.cs b/OpenSim/Region/Physics/Meshing/SculptMap.cs index d2d71de..740424e 100644 --- a/OpenSim/Region/Physics/Meshing/SculptMap.cs +++ b/OpenSim/Region/Physics/Meshing/SculptMap.cs | |||
@@ -62,6 +62,8 @@ namespace PrimMesher | |||
62 | 62 | ||
63 | bool needsScaling = false; | 63 | bool needsScaling = false; |
64 | 64 | ||
65 | bool smallMap = bmW * bmH <= lod * lod; | ||
66 | |||
65 | width = bmW; | 67 | width = bmW; |
66 | height = bmH; | 68 | height = bmH; |
67 | while (width * height > numLodPixels) | 69 | while (width * height > numLodPixels) |
@@ -104,9 +106,14 @@ namespace PrimMesher | |||
104 | { | 106 | { |
105 | for (int x = 0; x <= width; x++) | 107 | for (int x = 0; x <= width; x++) |
106 | { | 108 | { |
107 | int bmY = y < height ? y * 2 : y * 2 - 1; | 109 | Color c; |
108 | int bmX = x < width ? x * 2 : x * 2 - 1; | 110 | |
109 | Color c = bm.GetPixel(bmX, bmY); | 111 | if (smallMap) |
112 | c = bm.GetPixel(x < width ? x : x - 1, | ||
113 | y < height ? y : y - 1); | ||
114 | else | ||
115 | c = bm.GetPixel(x < width ? x * 2 : x * 2 - 1, | ||
116 | y < height ? y * 2 : y * 2 - 1); | ||
110 | 117 | ||
111 | redBytes[byteNdx] = c.R; | 118 | redBytes[byteNdx] = c.R; |
112 | greenBytes[byteNdx] = c.G; | 119 | greenBytes[byteNdx] = c.G; |
diff --git a/OpenSim/Services/FreeswitchService/FreeswitchService.cs b/OpenSim/Services/FreeswitchService/FreeswitchService.cs index fe6f5cd..c3f1056 100644 --- a/OpenSim/Services/FreeswitchService/FreeswitchService.cs +++ b/OpenSim/Services/FreeswitchService/FreeswitchService.cs | |||
@@ -50,13 +50,13 @@ namespace OpenSim.Services.FreeswitchService | |||
50 | 50 | ||
51 | public Hashtable HandleDialplanRequest(Hashtable request) | 51 | public Hashtable HandleDialplanRequest(Hashtable request) |
52 | { | 52 | { |
53 | m_log.DebugFormat("[FreeSwitchVoice] HandleDialplanRequest called with {0}",request.ToString()); | 53 | m_log.DebugFormat("[FreeSwitchVoice]: HandleDialplanRequest called with {0}",request.ToString()); |
54 | 54 | ||
55 | Hashtable response = new Hashtable(); | 55 | Hashtable response = new Hashtable(); |
56 | 56 | ||
57 | foreach (DictionaryEntry item in request) | 57 | foreach (DictionaryEntry item in request) |
58 | { | 58 | { |
59 | m_log.InfoFormat("[FreeSwitchDirectory] requestBody item {0} {1}",item.Key, item.Value); | 59 | // m_log.InfoFormat("[FreeSwitchDirectory]: requestBody item {0} {1}",item.Key, item.Value); |
60 | } | 60 | } |
61 | 61 | ||
62 | string requestcontext = (string) request["Hunt-Context"]; | 62 | string requestcontext = (string) request["Hunt-Context"]; |
@@ -66,7 +66,7 @@ namespace OpenSim.Services.FreeswitchService | |||
66 | 66 | ||
67 | if (m_freeSwitchContext != String.Empty && m_freeSwitchContext != requestcontext) | 67 | if (m_freeSwitchContext != String.Empty && m_freeSwitchContext != requestcontext) |
68 | { | 68 | { |
69 | m_log.Debug("[FreeSwitchDirectory] returning empty as it's for another context"); | 69 | m_log.Debug("[FreeSwitchDirectory]: returning empty as it's for another context"); |
70 | response["str_response_string"] = ""; | 70 | response["str_response_string"] = ""; |
71 | } | 71 | } |
72 | else | 72 | else |
@@ -116,13 +116,16 @@ namespace OpenSim.Services.FreeswitchService | |||
116 | { | 116 | { |
117 | Hashtable response = new Hashtable(); | 117 | Hashtable response = new Hashtable(); |
118 | string domain = (string) request["domain"]; | 118 | string domain = (string) request["domain"]; |
119 | if (domain != m_freeSwitchRealm) { | 119 | if (domain != m_freeSwitchRealm) |
120 | { | ||
120 | response["content_type"] = "text/xml"; | 121 | response["content_type"] = "text/xml"; |
121 | response["keepalive"] = false; | 122 | response["keepalive"] = false; |
122 | response["int_response_code"] = 200; | 123 | response["int_response_code"] = 200; |
123 | response["str_response_string"] = ""; | 124 | response["str_response_string"] = ""; |
124 | } else { | 125 | } |
125 | m_log.DebugFormat("[FreeSwitchDirectory] HandleDirectoryRequest called with {0}",request.ToString()); | 126 | else |
127 | { | ||
128 | // m_log.DebugFormat("[FreeSwitchDirectory]: HandleDirectoryRequest called with {0}",request.ToString()); | ||
126 | 129 | ||
127 | // information in the request we might be interested in | 130 | // information in the request we might be interested in |
128 | 131 | ||
@@ -143,10 +146,8 @@ namespace OpenSim.Services.FreeswitchService | |||
143 | //domain=9.20.151.43 | 146 | //domain=9.20.151.43 |
144 | //ip=9.167.220.137 // this is the correct IP rather than sip_contact_host above when through a vpn or NAT setup | 147 | //ip=9.167.220.137 // this is the correct IP rather than sip_contact_host above when through a vpn or NAT setup |
145 | 148 | ||
146 | foreach (DictionaryEntry item in request) | 149 | // foreach (DictionaryEntry item in request) |
147 | { | 150 | // m_log.DebugFormat("[FreeSwitchDirectory]: requestBody item {0} {1}", item.Key, item.Value); |
148 | m_log.InfoFormat("[FreeSwitchDirectory] requestBody item {0} {1}", item.Key, item.Value); | ||
149 | } | ||
150 | 151 | ||
151 | string eventCallingFunction = (string) request["Event-Calling-Function"]; | 152 | string eventCallingFunction = (string) request["Event-Calling-Function"]; |
152 | if (eventCallingFunction == null) | 153 | if (eventCallingFunction == null) |
@@ -173,7 +174,7 @@ namespace OpenSim.Services.FreeswitchService | |||
173 | } | 174 | } |
174 | else | 175 | else |
175 | { | 176 | { |
176 | m_log.ErrorFormat("[FreeSwitchVoice] HandleDirectoryRequest unknown sip_auth_method {0}",sipAuthMethod); | 177 | m_log.ErrorFormat("[FreeSwitchVoice]: HandleDirectoryRequest unknown sip_auth_method {0}",sipAuthMethod); |
177 | response["int_response_code"] = 404; | 178 | response["int_response_code"] = 404; |
178 | response["content_type"] = "text/xml"; | 179 | response["content_type"] = "text/xml"; |
179 | response["str_response_string"] = ""; | 180 | response["str_response_string"] = ""; |
@@ -205,7 +206,7 @@ namespace OpenSim.Services.FreeswitchService | |||
205 | } | 206 | } |
206 | else | 207 | else |
207 | { | 208 | { |
208 | m_log.ErrorFormat("[FreeSwitchVoice] HandleDirectoryRequest unknown Event-Calling-Function {0}",eventCallingFunction); | 209 | m_log.ErrorFormat("[FreeSwitchVoice]: HandleDirectoryRequest unknown Event-Calling-Function {0}",eventCallingFunction); |
209 | response["int_response_code"] = 404; | 210 | response["int_response_code"] = 404; |
210 | response["keepalive"] = false; | 211 | response["keepalive"] = false; |
211 | response["content_type"] = "text/xml"; | 212 | response["content_type"] = "text/xml"; |
@@ -217,7 +218,7 @@ namespace OpenSim.Services.FreeswitchService | |||
217 | 218 | ||
218 | private Hashtable HandleRegister(string Context, string Realm, Hashtable request) | 219 | private Hashtable HandleRegister(string Context, string Realm, Hashtable request) |
219 | { | 220 | { |
220 | m_log.Info("[FreeSwitchDirectory] HandleRegister called"); | 221 | m_log.Info("[FreeSwitchDirectory]: HandleRegister called"); |
221 | 222 | ||
222 | // TODO the password we return needs to match that sent in the request, this is hard coded for now | 223 | // TODO the password we return needs to match that sent in the request, this is hard coded for now |
223 | string password = "1234"; | 224 | string password = "1234"; |
@@ -254,7 +255,7 @@ namespace OpenSim.Services.FreeswitchService | |||
254 | 255 | ||
255 | private Hashtable HandleInvite(string Context, string Realm, Hashtable request) | 256 | private Hashtable HandleInvite(string Context, string Realm, Hashtable request) |
256 | { | 257 | { |
257 | m_log.Info("[FreeSwitchDirectory] HandleInvite called"); | 258 | m_log.Info("[FreeSwitchDirectory]: HandleInvite called"); |
258 | 259 | ||
259 | // TODO the password we return needs to match that sent in the request, this is hard coded for now | 260 | // TODO the password we return needs to match that sent in the request, this is hard coded for now |
260 | string password = "1234"; | 261 | string password = "1234"; |
@@ -301,7 +302,7 @@ namespace OpenSim.Services.FreeswitchService | |||
301 | 302 | ||
302 | private Hashtable HandleLocateUser(String Realm, Hashtable request) | 303 | private Hashtable HandleLocateUser(String Realm, Hashtable request) |
303 | { | 304 | { |
304 | m_log.Info("[FreeSwitchDirectory] HandleLocateUser called"); | 305 | m_log.Info("[FreeSwitchDirectory]: HandleLocateUser called"); |
305 | 306 | ||
306 | // TODO the password we return needs to match that sent in the request, this is hard coded for now | 307 | // TODO the password we return needs to match that sent in the request, this is hard coded for now |
307 | string domain = (string) request["domain"]; | 308 | string domain = (string) request["domain"]; |
@@ -335,7 +336,7 @@ namespace OpenSim.Services.FreeswitchService | |||
335 | 336 | ||
336 | private Hashtable HandleConfigSofia(string Context, string Realm, Hashtable request) | 337 | private Hashtable HandleConfigSofia(string Context, string Realm, Hashtable request) |
337 | { | 338 | { |
338 | m_log.Info("[FreeSwitchDirectory] HandleConfigSofia called"); | 339 | m_log.Info("[FreeSwitchDirectory]: HandleConfigSofia called."); |
339 | 340 | ||
340 | // TODO the password we return needs to match that sent in the request, this is hard coded for now | 341 | // TODO the password we return needs to match that sent in the request, this is hard coded for now |
341 | string domain = (string) request["domain"]; | 342 | string domain = (string) request["domain"]; |
diff --git a/OpenSim/Services/FreeswitchService/FreeswitchServiceBase.cs b/OpenSim/Services/FreeswitchService/FreeswitchServiceBase.cs index ebbb1b0..25c18b6 100644 --- a/OpenSim/Services/FreeswitchService/FreeswitchServiceBase.cs +++ b/OpenSim/Services/FreeswitchService/FreeswitchServiceBase.cs | |||
@@ -64,7 +64,7 @@ namespace OpenSim.Services.FreeswitchService | |||
64 | m_freeSwitchDefaultWellKnownIP = freeswitchConfig.GetString("ServerAddress", String.Empty); | 64 | m_freeSwitchDefaultWellKnownIP = freeswitchConfig.GetString("ServerAddress", String.Empty); |
65 | if (m_freeSwitchDefaultWellKnownIP == String.Empty) | 65 | if (m_freeSwitchDefaultWellKnownIP == String.Empty) |
66 | { | 66 | { |
67 | m_log.Error("[FREESWITCH]: No FreeswitchServerAddress given, can't continue"); | 67 | m_log.Error("[FREESWITCH]: No ServerAddress given, cannot start service."); |
68 | return; | 68 | return; |
69 | } | 69 | } |
70 | 70 | ||