diff options
author | BlueWall | 2011-01-27 08:53:57 -0500 |
---|---|---|
committer | BlueWall | 2011-01-27 08:53:57 -0500 |
commit | d89d9d1b1310d494fbb7712057eab8a196e10a04 (patch) | |
tree | 62834b7f5954aa8f013a159ee2fc3ccee385e673 /OpenSim | |
parent | Make FireAndForgetWrapper a singleton class (diff) | |
parent | Make it work (diff) | |
download | opensim-SC-d89d9d1b1310d494fbb7712057eab8a196e10a04.zip opensim-SC-d89d9d1b1310d494fbb7712057eab8a196e10a04.tar.gz opensim-SC-d89d9d1b1310d494fbb7712057eab8a196e10a04.tar.bz2 opensim-SC-d89d9d1b1310d494fbb7712057eab8a196e10a04.tar.xz |
Merge branch 'master' of /home/opensim/src/OpenSim/Core
Diffstat (limited to 'OpenSim')
59 files changed, 843 insertions, 604 deletions
diff --git a/OpenSim/Client/Linden/LLClientStackModule.cs b/OpenSim/Client/Linden/LLClientStackModule.cs deleted file mode 100644 index f882d5d..0000000 --- a/OpenSim/Client/Linden/LLClientStackModule.cs +++ /dev/null | |||
@@ -1,136 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Net; | ||
31 | using System.Reflection; | ||
32 | using System.Text; | ||
33 | using log4net; | ||
34 | using Nini.Config; | ||
35 | using OpenMetaverse; | ||
36 | using OpenSim.Region.ClientStack; | ||
37 | using OpenSim.Region.ClientStack.LindenUDP; | ||
38 | using OpenSim.Framework; | ||
39 | using OpenSim.Region.Framework.Scenes; | ||
40 | using OpenSim.Region.Framework.Interfaces; | ||
41 | |||
42 | namespace OpenSim.Client.Linden | ||
43 | { | ||
44 | /// <summary> | ||
45 | /// Linden UDP Stack Region Module | ||
46 | /// </summary> | ||
47 | public class LLClientStackModule : INonSharedRegionModule | ||
48 | { | ||
49 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
50 | |||
51 | #region IRegionModule Members | ||
52 | |||
53 | /// <summary> | ||
54 | /// Scene that contains the region's data | ||
55 | /// </summary> | ||
56 | protected Scene m_scene; | ||
57 | protected bool m_createClientStack = false; | ||
58 | protected IClientNetworkServer m_clientServer; | ||
59 | protected ClientStackManager m_clientStackManager; | ||
60 | protected IConfigSource m_source; | ||
61 | |||
62 | protected string m_clientStackDll = "OpenSim.Region.ClientStack.LindenUDP.dll"; | ||
63 | |||
64 | public void Initialise(IConfigSource source) | ||
65 | { | ||
66 | if (m_scene == null) | ||
67 | { | ||
68 | m_source = source; | ||
69 | |||
70 | IConfig startupConfig = m_source.Configs["Startup"]; | ||
71 | if (startupConfig != null) | ||
72 | { | ||
73 | m_clientStackDll = startupConfig.GetString("clientstack_plugin", "OpenSim.Region.ClientStack.LindenUDP.dll"); | ||
74 | } | ||
75 | } | ||
76 | } | ||
77 | |||
78 | public void AddRegion(Scene scene) | ||
79 | { | ||
80 | |||
81 | } | ||
82 | |||
83 | public void RemoveRegion(Scene scene) | ||
84 | { | ||
85 | |||
86 | } | ||
87 | |||
88 | public void RegionLoaded(Scene scene) | ||
89 | { | ||
90 | if (m_scene == null) | ||
91 | { | ||
92 | m_scene = scene; | ||
93 | } | ||
94 | |||
95 | if ((m_scene != null) && (m_createClientStack)) | ||
96 | { | ||
97 | m_log.Info("[LLClientStackModule] Starting up LLClientStack."); | ||
98 | IPEndPoint endPoint = m_scene.RegionInfo.InternalEndPoint; | ||
99 | |||
100 | uint port = (uint)endPoint.Port; | ||
101 | m_clientStackManager = new ClientStackManager(m_clientStackDll); | ||
102 | |||
103 | m_clientServer | ||
104 | = m_clientStackManager.CreateServer(endPoint.Address, | ||
105 | ref port, m_scene.RegionInfo.ProxyOffset, m_scene.RegionInfo.m_allow_alternate_ports, m_source, | ||
106 | m_scene.AuthenticateHandler); | ||
107 | |||
108 | m_clientServer.AddScene(m_scene); | ||
109 | |||
110 | m_clientServer.Start(); | ||
111 | } | ||
112 | } | ||
113 | |||
114 | public void Close() | ||
115 | { | ||
116 | |||
117 | } | ||
118 | |||
119 | public Type ReplaceableInterface | ||
120 | { | ||
121 | get { return null; } | ||
122 | } | ||
123 | |||
124 | public string Name | ||
125 | { | ||
126 | get { return "LLClientStackModule"; } | ||
127 | } | ||
128 | |||
129 | public bool IsSharedModule | ||
130 | { | ||
131 | get { return false; } | ||
132 | } | ||
133 | |||
134 | #endregion | ||
135 | } | ||
136 | } | ||
diff --git a/OpenSim/Client/Linden/Resources/LindenModules.addin.xml b/OpenSim/Client/Linden/Resources/LindenModules.addin.xml deleted file mode 100644 index af41e98..0000000 --- a/OpenSim/Client/Linden/Resources/LindenModules.addin.xml +++ /dev/null | |||
@@ -1,13 +0,0 @@ | |||
1 | <Addin id="OpenSim.Client.Linden.LindenModules" version="0.2"> | ||
2 | <Runtime> | ||
3 | <Import assembly="OpenSim.Client.Linden.dll"/> | ||
4 | </Runtime> | ||
5 | |||
6 | <Dependencies> | ||
7 | <Addin id="OpenSim" version="0.5" /> | ||
8 | </Dependencies> | ||
9 | |||
10 | <Extension path = "/OpenSim/RegionModules"> | ||
11 | <RegionModule id="LLClientStackModule" type="OpenSim.Client.Linden.LLClientStackModule" /> | ||
12 | </Extension> | ||
13 | </Addin> | ||
diff --git a/OpenSim/Data/MySQL/MySQLInventoryData.cs b/OpenSim/Data/MySQL/MySQLInventoryData.cs index 2dca3eb..9d70acb 100644 --- a/OpenSim/Data/MySQL/MySQLInventoryData.cs +++ b/OpenSim/Data/MySQL/MySQLInventoryData.cs | |||
@@ -867,7 +867,7 @@ namespace OpenSim.Data.MySQL | |||
867 | dbcon.Open(); | 867 | dbcon.Open(); |
868 | 868 | ||
869 | using (MySqlCommand sqlCmd = new MySqlCommand( | 869 | using (MySqlCommand sqlCmd = new MySqlCommand( |
870 | "SELECT * FROM inventoryitems WHERE avatarId = ?uuid AND assetType = ?type and flags = 1", dbcon)) | 870 | "SELECT * FROM inventoryitems WHERE avatarId = ?uuid AND assetType = ?type and flags & 1", dbcon)) |
871 | { | 871 | { |
872 | sqlCmd.Parameters.AddWithValue("?uuid", avatarID.ToString()); | 872 | sqlCmd.Parameters.AddWithValue("?uuid", avatarID.ToString()); |
873 | sqlCmd.Parameters.AddWithValue("?type", (int)AssetType.Gesture); | 873 | sqlCmd.Parameters.AddWithValue("?type", (int)AssetType.Gesture); |
diff --git a/OpenSim/Data/MySQL/MySQLXInventoryData.cs b/OpenSim/Data/MySQL/MySQLXInventoryData.cs index 3c73095..287c4dd 100644 --- a/OpenSim/Data/MySQL/MySQLXInventoryData.cs +++ b/OpenSim/Data/MySQL/MySQLXInventoryData.cs | |||
@@ -130,7 +130,7 @@ namespace OpenSim.Data.MySQL | |||
130 | { | 130 | { |
131 | using (MySqlCommand cmd = new MySqlCommand()) | 131 | using (MySqlCommand cmd = new MySqlCommand()) |
132 | { | 132 | { |
133 | cmd.CommandText = String.Format("select * from inventoryitems where avatarId = ?uuid and assetType = ?type and flags = 1", m_Realm); | 133 | cmd.CommandText = String.Format("select * from inventoryitems where avatarId = ?uuid and assetType = ?type and flags & 1", m_Realm); |
134 | 134 | ||
135 | cmd.Parameters.AddWithValue("?uuid", principalID.ToString()); | 135 | cmd.Parameters.AddWithValue("?uuid", principalID.ToString()); |
136 | cmd.Parameters.AddWithValue("?type", (int)AssetType.Gesture); | 136 | cmd.Parameters.AddWithValue("?type", (int)AssetType.Gesture); |
diff --git a/OpenSim/Framework/AvatarAppearance.cs b/OpenSim/Framework/AvatarAppearance.cs index 18a5733..5a6b265 100644 --- a/OpenSim/Framework/AvatarAppearance.cs +++ b/OpenSim/Framework/AvatarAppearance.cs | |||
@@ -427,19 +427,30 @@ namespace OpenSim.Framework | |||
427 | /// 0x80 bit set then we assume this is an append | 427 | /// 0x80 bit set then we assume this is an append |
428 | /// operation otherwise we replace whatever is | 428 | /// operation otherwise we replace whatever is |
429 | /// currently attached at the attachpoint | 429 | /// currently attached at the attachpoint |
430 | /// return true if something actually changed | ||
430 | /// </summary> | 431 | /// </summary> |
431 | public void SetAttachment(int attachpoint, UUID item, UUID asset) | 432 | public bool SetAttachment(int attachpoint, UUID item, UUID asset) |
432 | { | 433 | { |
433 | if (attachpoint == 0) | 434 | if (attachpoint == 0) |
434 | return; | 435 | return false; |
435 | 436 | ||
436 | if (item == UUID.Zero) | 437 | if (item == UUID.Zero) |
437 | { | 438 | { |
438 | if (m_attachments.ContainsKey(attachpoint)) | 439 | if (m_attachments.ContainsKey(attachpoint)) |
440 | { | ||
439 | m_attachments.Remove(attachpoint); | 441 | m_attachments.Remove(attachpoint); |
440 | return; | 442 | return true; |
443 | } | ||
444 | return false; | ||
441 | } | 445 | } |
442 | 446 | ||
447 | // check if the item is already attached at this point | ||
448 | if (GetAttachpoint(item) == (attachpoint & 0x7F)) | ||
449 | { | ||
450 | // m_log.DebugFormat("[AVATAR APPEARANCE] attempt to attach an already attached item {0}",item); | ||
451 | return false; | ||
452 | } | ||
453 | |||
443 | // check if this is an append or a replace, 0x80 marks it as an append | 454 | // check if this is an append or a replace, 0x80 marks it as an append |
444 | if ((attachpoint & 0x80) > 0) | 455 | if ((attachpoint & 0x80) > 0) |
445 | { | 456 | { |
@@ -451,6 +462,7 @@ namespace OpenSim.Framework | |||
451 | { | 462 | { |
452 | ReplaceAttachment(new AvatarAttachment(attachpoint,item,asset)); | 463 | ReplaceAttachment(new AvatarAttachment(attachpoint,item,asset)); |
453 | } | 464 | } |
465 | return true; | ||
454 | } | 466 | } |
455 | 467 | ||
456 | public int GetAttachpoint(UUID itemID) | 468 | public int GetAttachpoint(UUID itemID) |
@@ -465,7 +477,7 @@ namespace OpenSim.Framework | |||
465 | return 0; | 477 | return 0; |
466 | } | 478 | } |
467 | 479 | ||
468 | public void DetachAttachment(UUID itemID) | 480 | public bool DetachAttachment(UUID itemID) |
469 | { | 481 | { |
470 | foreach (KeyValuePair<int, List<AvatarAttachment>> kvp in m_attachments) | 482 | foreach (KeyValuePair<int, List<AvatarAttachment>> kvp in m_attachments) |
471 | { | 483 | { |
@@ -478,9 +490,10 @@ namespace OpenSim.Framework | |||
478 | // And remove the list if there are no more attachments here | 490 | // And remove the list if there are no more attachments here |
479 | if (m_attachments[kvp.Key].Count == 0) | 491 | if (m_attachments[kvp.Key].Count == 0) |
480 | m_attachments.Remove(kvp.Key); | 492 | m_attachments.Remove(kvp.Key); |
481 | return; | 493 | return true; |
482 | } | 494 | } |
483 | } | 495 | } |
496 | return false; | ||
484 | } | 497 | } |
485 | 498 | ||
486 | public void ClearAttachments() | 499 | public void ClearAttachments() |
diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs index dbb0781..c2f9c3a 100644 --- a/OpenSim/Framework/Capabilities/Caps.cs +++ b/OpenSim/Framework/Capabilities/Caps.cs | |||
@@ -765,8 +765,8 @@ namespace OpenSim.Framework.Capabilities | |||
765 | { | 765 | { |
766 | try | 766 | try |
767 | { | 767 | { |
768 | m_log.Debug("[CAPS]: UploadBakedTexture Request in region: " + | 768 | // m_log.Debug("[CAPS]: UploadBakedTexture Request in region: " + |
769 | m_regionName); | 769 | // m_regionName); |
770 | 770 | ||
771 | string capsBase = "/CAPS/" + m_capsObjectPath; | 771 | string capsBase = "/CAPS/" + m_capsObjectPath; |
772 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); | 772 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); |
@@ -1332,7 +1332,7 @@ namespace OpenSim.Framework.Capabilities | |||
1332 | newAssetID = UUID.Random(); | 1332 | newAssetID = UUID.Random(); |
1333 | uploaderPath = path; | 1333 | uploaderPath = path; |
1334 | httpListener = httpServer; | 1334 | httpListener = httpServer; |
1335 | m_log.InfoFormat("[CAPS] baked texture upload starting for {0}",newAssetID); | 1335 | // m_log.InfoFormat("[CAPS] baked texture upload starting for {0}",newAssetID); |
1336 | } | 1336 | } |
1337 | 1337 | ||
1338 | /// <summary> | 1338 | /// <summary> |
@@ -1360,7 +1360,7 @@ namespace OpenSim.Framework.Capabilities | |||
1360 | 1360 | ||
1361 | httpListener.RemoveStreamHandler("POST", uploaderPath); | 1361 | httpListener.RemoveStreamHandler("POST", uploaderPath); |
1362 | 1362 | ||
1363 | m_log.InfoFormat("[CAPS] baked texture upload completed for {0}",newAssetID); | 1363 | // m_log.InfoFormat("[CAPS] baked texture upload completed for {0}",newAssetID); |
1364 | 1364 | ||
1365 | return res; | 1365 | return res; |
1366 | } | 1366 | } |
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs index 22ce880..c59fbca 100755 --- a/OpenSim/Framework/Console/ConsoleBase.cs +++ b/OpenSim/Framework/Console/ConsoleBase.cs | |||
@@ -75,6 +75,11 @@ namespace OpenSim.Framework.Console | |||
75 | { | 75 | { |
76 | System.Console.WriteLine(text); | 76 | System.Console.WriteLine(text); |
77 | } | 77 | } |
78 | |||
79 | public virtual void OutputFormat(string format, params object[] components) | ||
80 | { | ||
81 | Output(string.Format(format, components)); | ||
82 | } | ||
78 | 83 | ||
79 | public string CmdPrompt(string p) | 84 | public string CmdPrompt(string p) |
80 | { | 85 | { |
diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs index cbab2db..b28ad69 100644 --- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs +++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs | |||
@@ -175,7 +175,7 @@ namespace OpenSim.Framework.Servers | |||
175 | 175 | ||
176 | m_console.Commands.AddCommand("base", false, "show info", | 176 | m_console.Commands.AddCommand("base", false, "show info", |
177 | "show info", | 177 | "show info", |
178 | "Show general information", HandleShow); | 178 | "Show general information about the server", HandleShow); |
179 | 179 | ||
180 | m_console.Commands.AddCommand("base", false, "show stats", | 180 | m_console.Commands.AddCommand("base", false, "show stats", |
181 | "show stats", | 181 | "show stats", |
@@ -371,8 +371,7 @@ namespace OpenSim.Framework.Servers | |||
371 | switch (showParams[0]) | 371 | switch (showParams[0]) |
372 | { | 372 | { |
373 | case "info": | 373 | case "info": |
374 | Notice("Version: " + m_version); | 374 | ShowInfo(); |
375 | Notice("Startup directory: " + m_startupDirectory); | ||
376 | break; | 375 | break; |
377 | 376 | ||
378 | case "stats": | 377 | case "stats": |
@@ -389,18 +388,30 @@ namespace OpenSim.Framework.Servers | |||
389 | break; | 388 | break; |
390 | 389 | ||
391 | case "version": | 390 | case "version": |
392 | Notice( | 391 | Notice(GetVersionText()); |
393 | String.Format( | ||
394 | "Version: {0} (interface version {1})", m_version, VersionInfo.MajorInterfaceVersion)); | ||
395 | break; | 392 | break; |
396 | } | 393 | } |
397 | } | 394 | } |
395 | |||
396 | protected void ShowInfo() | ||
397 | { | ||
398 | Notice(GetVersionText()); | ||
399 | Notice("Startup directory: " + m_startupDirectory); | ||
400 | if (null != m_consoleAppender) | ||
401 | Notice(String.Format("Console log level: {0}", m_consoleAppender.Threshold)); | ||
402 | } | ||
403 | |||
404 | protected string GetVersionText() | ||
405 | { | ||
406 | return String.Format("Version: {0} (interface version {1})", m_version, VersionInfo.MajorInterfaceVersion); | ||
407 | } | ||
398 | 408 | ||
399 | /// <summary> | 409 | /// <summary> |
400 | /// Console output is only possible if a console has been established. | 410 | /// Console output is only possible if a console has been established. |
401 | /// That is something that cannot be determined within this class. So | 411 | /// That is something that cannot be determined within this class. So |
402 | /// all attempts to use the console MUST be verified. | 412 | /// all attempts to use the console MUST be verified. |
403 | /// </summary> | 413 | /// </summary> |
414 | /// <param name="msg"></param> | ||
404 | protected void Notice(string msg) | 415 | protected void Notice(string msg) |
405 | { | 416 | { |
406 | if (m_console != null) | 417 | if (m_console != null) |
@@ -408,6 +419,19 @@ namespace OpenSim.Framework.Servers | |||
408 | m_console.Output(msg); | 419 | m_console.Output(msg); |
409 | } | 420 | } |
410 | } | 421 | } |
422 | |||
423 | /// <summary> | ||
424 | /// Console output is only possible if a console has been established. | ||
425 | /// That is something that cannot be determined within this class. So | ||
426 | /// all attempts to use the console MUST be verified. | ||
427 | /// </summary> | ||
428 | /// <param name="format"></param> | ||
429 | /// <param name="components"></param> | ||
430 | protected void Notice(string format, params string[] components) | ||
431 | { | ||
432 | if (m_console != null) | ||
433 | m_console.OutputFormat(format, components); | ||
434 | } | ||
411 | 435 | ||
412 | /// <summary> | 436 | /// <summary> |
413 | /// Enhance the version string with extra information if it's available. | 437 | /// Enhance the version string with extra information if it's available. |
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 86ad7aa..d4ee7ba 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | |||
@@ -587,8 +587,9 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
587 | // Every month or so this will wrap and give bad numbers, not really a problem | 587 | // Every month or so this will wrap and give bad numbers, not really a problem |
588 | // since its just for reporting, 200ms limit can be adjusted | 588 | // since its just for reporting, 200ms limit can be adjusted |
589 | int tickdiff = Environment.TickCount - tickstart; | 589 | int tickdiff = Environment.TickCount - tickstart; |
590 | if (tickdiff > 200) | 590 | if (tickdiff > 500) |
591 | m_log.InfoFormat("[BASE HTTP SERVER]: slow request <{0}> for {1} took {2} ms",reqnum,request.RawUrl,tickdiff); | 591 | m_log.InfoFormat( |
592 | "[BASE HTTP SERVER]: slow request <{0}> for {1} took {2} ms", reqnum, request.RawUrl, tickdiff); | ||
592 | } | 593 | } |
593 | } | 594 | } |
594 | 595 | ||
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index d88d095..d731ac5 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs | |||
@@ -58,7 +58,7 @@ namespace OpenSim.Framework | |||
58 | 58 | ||
59 | // number of milliseconds a call can take before it is considered | 59 | // number of milliseconds a call can take before it is considered |
60 | // a "long" call for warning & debugging purposes | 60 | // a "long" call for warning & debugging purposes |
61 | public const int LongCallTime = 200; | 61 | public const int LongCallTime = 500; |
62 | 62 | ||
63 | /// <summary> | 63 | /// <summary> |
64 | /// Send LLSD to an HTTP client in application/llsd+json form | 64 | /// Send LLSD to an HTTP client in application/llsd+json form |
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index 51eb396..ed4b620 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs | |||
@@ -283,10 +283,6 @@ namespace OpenSim | |||
283 | "kick user <first> <last> [message]", | 283 | "kick user <first> <last> [message]", |
284 | "Kick a user off the simulator", KickUserCommand); | 284 | "Kick a user off the simulator", KickUserCommand); |
285 | 285 | ||
286 | m_console.Commands.AddCommand("region", false, "show assets", | ||
287 | "show assets", | ||
288 | "Show asset data", HandleShow); | ||
289 | |||
290 | m_console.Commands.AddCommand("region", false, "show users", | 286 | m_console.Commands.AddCommand("region", false, "show users", |
291 | "show users [full]", | 287 | "show users [full]", |
292 | "Show user data for users currently on the region", | 288 | "Show user data for users currently on the region", |
@@ -305,13 +301,6 @@ namespace OpenSim | |||
305 | m_console.Commands.AddCommand("region", false, "show regions", | 301 | m_console.Commands.AddCommand("region", false, "show regions", |
306 | "show regions", | 302 | "show regions", |
307 | "Show region data", HandleShow); | 303 | "Show region data", HandleShow); |
308 | |||
309 | m_console.Commands.AddCommand("region", false, "show queues", | ||
310 | "show queues [full]", | ||
311 | "Show queue data for each client", | ||
312 | "Without the 'full' option, only users actually on the region are shown." | ||
313 | + " With the 'full' option child agents of users in neighbouring regions are also shown.", | ||
314 | HandleShow); | ||
315 | 304 | ||
316 | m_console.Commands.AddCommand("region", false, "show ratings", | 305 | m_console.Commands.AddCommand("region", false, "show ratings", |
317 | "show ratings", | 306 | "show ratings", |
@@ -335,16 +324,19 @@ namespace OpenSim | |||
335 | "Restart all sims in this instance", RunCommand); | 324 | "Restart all sims in this instance", RunCommand); |
336 | 325 | ||
337 | m_console.Commands.AddCommand("region", false, "config set", | 326 | m_console.Commands.AddCommand("region", false, "config set", |
338 | "config set <section> <field> <value>", | 327 | "config set <section> <key> <value>", |
339 | "Set a config option", HandleConfig); | 328 | "Set a config option. In most cases this is not useful since changed parameters are not dynamically reloaded. Neither do changed parameters persist - you will have to change a config file manually and restart.", HandleConfig); |
340 | 329 | ||
341 | m_console.Commands.AddCommand("region", false, "config get", | 330 | m_console.Commands.AddCommand("region", false, "config get", |
342 | "config get <section> <field>", | 331 | "config get [<section>] [<key>]", |
343 | "Read a config option", HandleConfig); | 332 | "Show a config option", |
333 | "If neither section nor field are specified, then the whole current configuration is printed." + Environment.NewLine | ||
334 | + "If a section is given but not a field, then all fields in that section are printed.", | ||
335 | HandleConfig); | ||
344 | 336 | ||
345 | m_console.Commands.AddCommand("region", false, "config save", | 337 | m_console.Commands.AddCommand("region", false, "config save", |
346 | "config save", | 338 | "config save <path>", |
347 | "Save current configuration", HandleConfig); | 339 | "Save current configuration to a file at the given path", HandleConfig); |
348 | 340 | ||
349 | m_console.Commands.AddCommand("region", false, "command-script", | 341 | m_console.Commands.AddCommand("region", false, "command-script", |
350 | "command-script <script>", | 342 | "command-script <script>", |
@@ -586,7 +578,6 @@ namespace OpenSim | |||
586 | List<string> args = new List<string>(cmd); | 578 | List<string> args = new List<string>(cmd); |
587 | args.RemoveAt(0); | 579 | args.RemoveAt(0); |
588 | string[] cmdparams = args.ToArray(); | 580 | string[] cmdparams = args.ToArray(); |
589 | string n = "CONFIG"; | ||
590 | 581 | ||
591 | if (cmdparams.Length > 0) | 582 | if (cmdparams.Length > 0) |
592 | { | 583 | { |
@@ -595,8 +586,8 @@ namespace OpenSim | |||
595 | case "set": | 586 | case "set": |
596 | if (cmdparams.Length < 4) | 587 | if (cmdparams.Length < 4) |
597 | { | 588 | { |
598 | MainConsole.Instance.Output(String.Format("SYNTAX: {0} SET SECTION KEY VALUE",n)); | 589 | Notice("Syntax: config set <section> <key> <value>"); |
599 | MainConsole.Instance.Output(String.Format("EXAMPLE: {0} SET ScriptEngine.DotNetEngine NumberOfScriptThreads 5",n)); | 590 | Notice("Example: config set ScriptEngine.DotNetEngine NumberOfScriptThreads 5"); |
600 | } | 591 | } |
601 | else | 592 | else |
602 | { | 593 | { |
@@ -609,48 +600,68 @@ namespace OpenSim | |||
609 | c.Set(cmdparams[2], _value); | 600 | c.Set(cmdparams[2], _value); |
610 | m_config.Source.Merge(source); | 601 | m_config.Source.Merge(source); |
611 | 602 | ||
612 | MainConsole.Instance.Output(String.Format("{0} {0} {1} {2} {3}",n,cmdparams[1],cmdparams[2],_value)); | 603 | Notice("In section [{0}], set {1} = {2}", c.Name, cmdparams[2], _value); |
613 | } | 604 | } |
614 | } | 605 | } |
615 | break; | 606 | break; |
616 | 607 | ||
617 | case "get": | 608 | case "get": |
618 | if (cmdparams.Length < 3) | 609 | if (cmdparams.Length == 1) |
619 | { | 610 | { |
620 | MainConsole.Instance.Output(String.Format("SYNTAX: {0} GET SECTION KEY",n)); | 611 | foreach (IConfig config in m_config.Source.Configs) |
621 | MainConsole.Instance.Output(String.Format("EXAMPLE: {0} GET ScriptEngine.DotNetEngine NumberOfScriptThreads",n)); | 612 | { |
613 | Notice("[{0}]", config.Name); | ||
614 | string[] keys = config.GetKeys(); | ||
615 | foreach (string key in keys) | ||
616 | Notice(" {0} = {1}", key, config.GetString(key)); | ||
617 | } | ||
622 | } | 618 | } |
623 | else | 619 | else if (cmdparams.Length == 2 || cmdparams.Length == 3) |
624 | { | 620 | { |
625 | IConfig c = m_config.Source.Configs[cmdparams[1]]; | 621 | IConfig config = m_config.Source.Configs[cmdparams[1]]; |
626 | if (c == null) | 622 | if (config == null) |
627 | { | 623 | { |
628 | MainConsole.Instance.Output(String.Format("Section \"{0}\" does not exist.",cmdparams[1])); | 624 | Notice("Section \"{0}\" does not exist.",cmdparams[1]); |
629 | break; | 625 | break; |
630 | } | 626 | } |
631 | else | 627 | else |
632 | { | 628 | { |
633 | MainConsole.Instance.Output(String.Format("{0} GET {1} {2} : {3}",n,cmdparams[1],cmdparams[2], | 629 | if (cmdparams.Length == 2) |
634 | c.GetString(cmdparams[2]))); | 630 | { |
631 | Notice("[{0}]", config.Name); | ||
632 | foreach (string key in config.GetKeys()) | ||
633 | Notice(" {0} = {1}", key, config.GetString(key)); | ||
634 | } | ||
635 | else | ||
636 | { | ||
637 | Notice( | ||
638 | "config get {0} {1} : {2}", | ||
639 | cmdparams[1], cmdparams[2], config.GetString(cmdparams[2])); | ||
640 | } | ||
635 | } | 641 | } |
636 | } | 642 | } |
643 | else | ||
644 | { | ||
645 | Notice("Syntax: config get [<section>] [<key>]"); | ||
646 | Notice("Example: config get ScriptEngine.DotNetEngine NumberOfScriptThreads"); | ||
647 | } | ||
637 | 648 | ||
638 | break; | 649 | break; |
639 | 650 | ||
640 | case "save": | 651 | case "save": |
641 | if (cmdparams.Length < 2) | 652 | if (cmdparams.Length < 2) |
642 | { | 653 | { |
643 | MainConsole.Instance.Output("SYNTAX: " + n + " SAVE FILE"); | 654 | Notice("Syntax: config save <path>"); |
644 | return; | 655 | return; |
645 | } | 656 | } |
646 | 657 | ||
647 | if (Application.iniFilePath == cmdparams[1]) | 658 | if (Application.iniFilePath == cmdparams[1]) |
648 | { | 659 | { |
649 | MainConsole.Instance.Output("FILE can not be " + Application.iniFilePath); | 660 | Notice("Path can not be " + Application.iniFilePath); |
650 | return; | 661 | return; |
651 | } | 662 | } |
652 | 663 | ||
653 | MainConsole.Instance.Output("Saving configuration file: " + cmdparams[1]); | 664 | Notice("Saving configuration file: " + cmdparams[1]); |
654 | m_config.Save(cmdparams[1]); | 665 | m_config.Save(cmdparams[1]); |
655 | break; | 666 | break; |
656 | } | 667 | } |
@@ -869,10 +880,6 @@ namespace OpenSim | |||
869 | 880 | ||
870 | switch (showParams[0]) | 881 | switch (showParams[0]) |
871 | { | 882 | { |
872 | case "assets": | ||
873 | MainConsole.Instance.Output("Not implemented."); | ||
874 | break; | ||
875 | |||
876 | case "users": | 883 | case "users": |
877 | IList agents; | 884 | IList agents; |
878 | if (showParams.Length > 1 && showParams[1] == "full") | 885 | if (showParams.Length > 1 && showParams[1] == "full") |
@@ -959,10 +966,6 @@ namespace OpenSim | |||
959 | }); | 966 | }); |
960 | break; | 967 | break; |
961 | 968 | ||
962 | case "queues": | ||
963 | Notice(GetQueuesReport(showParams)); | ||
964 | break; | ||
965 | |||
966 | case "ratings": | 969 | case "ratings": |
967 | m_sceneManager.ForEachScene( | 970 | m_sceneManager.ForEachScene( |
968 | delegate(Scene scene) | 971 | delegate(Scene scene) |
@@ -990,94 +993,6 @@ namespace OpenSim | |||
990 | } | 993 | } |
991 | 994 | ||
992 | /// <summary> | 995 | /// <summary> |
993 | /// Generate UDP Queue data report for each client | ||
994 | /// </summary> | ||
995 | /// <param name="showParams"></param> | ||
996 | /// <returns></returns> | ||
997 | private string GetQueuesReport(string[] showParams) | ||
998 | { | ||
999 | bool showChildren = false; | ||
1000 | |||
1001 | if (showParams.Length > 1 && showParams[1] == "full") | ||
1002 | showChildren = true; | ||
1003 | |||
1004 | StringBuilder report = new StringBuilder(); | ||
1005 | |||
1006 | int columnPadding = 2; | ||
1007 | int maxNameLength = 18; | ||
1008 | int maxRegionNameLength = 14; | ||
1009 | int maxTypeLength = 4; | ||
1010 | int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; | ||
1011 | |||
1012 | report.AppendFormat("{0,-" + maxNameLength + "}{1,-" + columnPadding + "}", "User", ""); | ||
1013 | report.AppendFormat("{0,-" + maxRegionNameLength + "}{1,-" + columnPadding + "}", "Region", ""); | ||
1014 | report.AppendFormat("{0,-" + maxTypeLength + "}{1,-" + columnPadding + "}", "Type", ""); | ||
1015 | |||
1016 | report.AppendFormat( | ||
1017 | "{0,9} {1,9} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", | ||
1018 | "Packets", | ||
1019 | "Packets", | ||
1020 | "Bytes", | ||
1021 | "Bytes", | ||
1022 | "Bytes", | ||
1023 | "Bytes", | ||
1024 | "Bytes", | ||
1025 | "Bytes", | ||
1026 | "Bytes", | ||
1027 | "Bytes", | ||
1028 | "Bytes"); | ||
1029 | |||
1030 | report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); | ||
1031 | report.AppendFormat( | ||
1032 | "{0,9} {1,9} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", | ||
1033 | "Out", | ||
1034 | "In", | ||
1035 | "Unacked", | ||
1036 | "Resend", | ||
1037 | "Land", | ||
1038 | "Wind", | ||
1039 | "Cloud", | ||
1040 | "Task", | ||
1041 | "Texture", | ||
1042 | "Asset", | ||
1043 | "State"); | ||
1044 | |||
1045 | m_sceneManager.ForEachScene( | ||
1046 | delegate(Scene scene) | ||
1047 | { | ||
1048 | scene.ForEachClient( | ||
1049 | delegate(IClientAPI client) | ||
1050 | { | ||
1051 | if (client is IStatsCollector) | ||
1052 | { | ||
1053 | bool isChild = scene.PresenceChildStatus(client.AgentId); | ||
1054 | if (isChild && !showChildren) | ||
1055 | return; | ||
1056 | |||
1057 | string name = client.Name; | ||
1058 | string regionName = scene.RegionInfo.RegionName; | ||
1059 | |||
1060 | report.AppendFormat( | ||
1061 | "{0,-" + maxNameLength + "}{1,-" + columnPadding + "}", | ||
1062 | name.Length > maxNameLength ? name.Substring(0, maxNameLength) : name, ""); | ||
1063 | report.AppendFormat( | ||
1064 | "{0,-" + maxRegionNameLength + "}{1,-" + columnPadding + "}", | ||
1065 | regionName.Length > maxRegionNameLength ? regionName.Substring(0, maxRegionNameLength) : regionName, ""); | ||
1066 | report.AppendFormat( | ||
1067 | "{0,-" + maxTypeLength + "}{1,-" + columnPadding + "}", | ||
1068 | isChild ? "Cd" : "Rt", ""); | ||
1069 | |||
1070 | IStatsCollector stats = (IStatsCollector)client; | ||
1071 | |||
1072 | report.AppendLine(stats.Report()); | ||
1073 | } | ||
1074 | }); | ||
1075 | }); | ||
1076 | |||
1077 | return report.ToString(); | ||
1078 | } | ||
1079 | |||
1080 | /// <summary> | ||
1081 | /// Use XML2 format to serialize data to a file | 996 | /// Use XML2 format to serialize data to a file |
1082 | /// </summary> | 997 | /// </summary> |
1083 | /// <param name="module"></param> | 998 | /// <param name="module"></param> |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index ee4f04e..5dab1bc 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -368,6 +368,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
368 | #region Properties | 368 | #region Properties |
369 | 369 | ||
370 | public LLUDPClient UDPClient { get { return m_udpClient; } } | 370 | public LLUDPClient UDPClient { get { return m_udpClient; } } |
371 | public LLUDPServer UDPServer { get { return m_udpServer; } } | ||
371 | public IPEndPoint RemoteEndPoint { get { return m_udpClient.RemoteEndPoint; } } | 372 | public IPEndPoint RemoteEndPoint { get { return m_udpClient.RemoteEndPoint; } } |
372 | public UUID SecureSessionId { get { return m_secureSessionId; } } | 373 | public UUID SecureSessionId { get { return m_secureSessionId; } } |
373 | public IScene Scene { get { return m_scene; } } | 374 | public IScene Scene { get { return m_scene; } } |
@@ -3465,9 +3466,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3465 | ani.AnimationList[i].AnimSequenceID = seqs[i]; | 3466 | ani.AnimationList[i].AnimSequenceID = seqs[i]; |
3466 | 3467 | ||
3467 | ani.AnimationSourceList[i] = new AvatarAnimationPacket.AnimationSourceListBlock(); | 3468 | ani.AnimationSourceList[i] = new AvatarAnimationPacket.AnimationSourceListBlock(); |
3468 | ani.AnimationSourceList[i].ObjectID = objectIDs[i]; | 3469 | if (objectIDs[i].Equals(sourceAgentId)) |
3469 | if (objectIDs[i] == UUID.Zero) | 3470 | ani.AnimationSourceList[i].ObjectID = UUID.Zero; |
3470 | ani.AnimationSourceList[i].ObjectID = sourceAgentId; | 3471 | else |
3472 | ani.AnimationSourceList[i].ObjectID = objectIDs[i]; | ||
3471 | } | 3473 | } |
3472 | ani.Header.Reliable = false; | 3474 | ani.Header.Reliable = false; |
3473 | OutPacket(ani, ThrottleOutPacketType.Task); | 3475 | OutPacket(ani, ThrottleOutPacketType.Task); |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index e02783a..d4c3307 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | |||
@@ -256,18 +256,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
256 | public string GetStats() | 256 | public string GetStats() |
257 | { | 257 | { |
258 | return string.Format( | 258 | return string.Format( |
259 | "{0,9} {1,9} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}", | 259 | "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}", |
260 | PacketsSent, | 260 | PacketsSent, |
261 | PacketsReceived, | 261 | PacketsReceived, |
262 | UnackedBytes, | 262 | UnackedBytes, |
263 | m_throttleCategories[(int)ThrottleOutPacketType.Resend].Content, | 263 | m_packetOutboxes[(int)ThrottleOutPacketType.Resend].Count, |
264 | m_throttleCategories[(int)ThrottleOutPacketType.Land].Content, | 264 | m_packetOutboxes[(int)ThrottleOutPacketType.Land].Count, |
265 | m_throttleCategories[(int)ThrottleOutPacketType.Wind].Content, | 265 | m_packetOutboxes[(int)ThrottleOutPacketType.Wind].Count, |
266 | m_throttleCategories[(int)ThrottleOutPacketType.Cloud].Content, | 266 | m_packetOutboxes[(int)ThrottleOutPacketType.Cloud].Count, |
267 | m_throttleCategories[(int)ThrottleOutPacketType.Task].Content, | 267 | m_packetOutboxes[(int)ThrottleOutPacketType.Task].Count, |
268 | m_throttleCategories[(int)ThrottleOutPacketType.Texture].Content, | 268 | m_packetOutboxes[(int)ThrottleOutPacketType.Texture].Count, |
269 | m_throttleCategories[(int)ThrottleOutPacketType.Asset].Content, | 269 | m_packetOutboxes[(int)ThrottleOutPacketType.Asset].Count, |
270 | m_throttleCategories[(int)ThrottleOutPacketType.State].Content); | 270 | m_packetOutboxes[(int)ThrottleOutPacketType.State].Count); |
271 | } | 271 | } |
272 | 272 | ||
273 | public void SendPacketStats() | 273 | public void SendPacketStats() |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index e54cfc2..df8ddbb 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | |||
@@ -114,8 +114,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
114 | //private UDPClientCollection m_clients = new UDPClientCollection(); | 114 | //private UDPClientCollection m_clients = new UDPClientCollection(); |
115 | /// <summary>Bandwidth throttle for this UDP server</summary> | 115 | /// <summary>Bandwidth throttle for this UDP server</summary> |
116 | protected TokenBucket m_throttle; | 116 | protected TokenBucket m_throttle; |
117 | |||
117 | /// <summary>Bandwidth throttle rates for this UDP server</summary> | 118 | /// <summary>Bandwidth throttle rates for this UDP server</summary> |
118 | protected ThrottleRates m_throttleRates; | 119 | public ThrottleRates ThrottleRates { get; private set; } |
120 | |||
119 | /// <summary>Manages authentication for agent circuits</summary> | 121 | /// <summary>Manages authentication for agent circuits</summary> |
120 | private AgentCircuitManager m_circuitManager; | 122 | private AgentCircuitManager m_circuitManager; |
121 | /// <summary>Reference to the scene this UDP server is attached to</summary> | 123 | /// <summary>Reference to the scene this UDP server is attached to</summary> |
@@ -226,7 +228,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
226 | #endregion BinaryStats | 228 | #endregion BinaryStats |
227 | 229 | ||
228 | m_throttle = new TokenBucket(null, sceneThrottleBps, sceneThrottleBps); | 230 | m_throttle = new TokenBucket(null, sceneThrottleBps, sceneThrottleBps); |
229 | m_throttleRates = new ThrottleRates(configSource); | 231 | ThrottleRates = new ThrottleRates(configSource); |
230 | } | 232 | } |
231 | 233 | ||
232 | public void Start() | 234 | public void Start() |
@@ -585,8 +587,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
585 | 587 | ||
586 | // Stats tracking | 588 | // Stats tracking |
587 | Interlocked.Increment(ref udpClient.PacketsSent); | 589 | Interlocked.Increment(ref udpClient.PacketsSent); |
588 | if (isReliable) | ||
589 | Interlocked.Add(ref udpClient.UnackedBytes, outgoingPacket.Buffer.DataLength); | ||
590 | 590 | ||
591 | // Put the UDP payload on the wire | 591 | // Put the UDP payload on the wire |
592 | AsyncBeginSend(buffer); | 592 | AsyncBeginSend(buffer); |
@@ -859,9 +859,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
859 | // Acknowledge the UseCircuitCode packet | 859 | // Acknowledge the UseCircuitCode packet |
860 | SendAckImmediate(remoteEndPoint, packet.Header.Sequence); | 860 | SendAckImmediate(remoteEndPoint, packet.Header.Sequence); |
861 | 861 | ||
862 | m_log.DebugFormat( | 862 | // m_log.DebugFormat( |
863 | "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", | 863 | // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", |
864 | buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); | 864 | // buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); |
865 | } | 865 | } |
866 | 866 | ||
867 | private void SendAckImmediate(IPEndPoint remoteEndpoint, uint sequenceNumber) | 867 | private void SendAckImmediate(IPEndPoint remoteEndpoint, uint sequenceNumber) |
@@ -924,7 +924,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
924 | protected virtual void AddClient(uint circuitCode, UUID agentID, UUID sessionID, IPEndPoint remoteEndPoint, AuthenticateResponse sessionInfo) | 924 | protected virtual void AddClient(uint circuitCode, UUID agentID, UUID sessionID, IPEndPoint remoteEndPoint, AuthenticateResponse sessionInfo) |
925 | { | 925 | { |
926 | // Create the LLUDPClient | 926 | // Create the LLUDPClient |
927 | LLUDPClient udpClient = new LLUDPClient(this, m_throttleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); | 927 | LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); |
928 | IClientAPI existingClient; | 928 | IClientAPI existingClient; |
929 | 929 | ||
930 | if (!m_scene.TryGetClient(agentID, out existingClient)) | 930 | if (!m_scene.TryGetClient(agentID, out existingClient)) |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 4cb4aee..9d40688 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs | |||
@@ -28,6 +28,7 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Net; | 30 | using System.Net; |
31 | using System.Threading; | ||
31 | using OpenMetaverse; | 32 | using OpenMetaverse; |
32 | 33 | ||
33 | namespace OpenSim.Region.ClientStack.LindenUDP | 34 | namespace OpenSim.Region.ClientStack.LindenUDP |
@@ -77,6 +78,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
77 | public void Add(OutgoingPacket packet) | 78 | public void Add(OutgoingPacket packet) |
78 | { | 79 | { |
79 | m_pendingAdds.Enqueue(packet); | 80 | m_pendingAdds.Enqueue(packet); |
81 | Interlocked.Add(ref packet.Client.UnackedBytes, packet.Buffer.DataLength); | ||
80 | } | 82 | } |
81 | 83 | ||
82 | /// <summary> | 84 | /// <summary> |
@@ -139,46 +141,31 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
139 | private void ProcessQueues() | 141 | private void ProcessQueues() |
140 | { | 142 | { |
141 | // Process all the pending adds | 143 | // Process all the pending adds |
142 | |||
143 | OutgoingPacket pendingAdd; | 144 | OutgoingPacket pendingAdd; |
144 | if (m_pendingAdds != null) | 145 | while (m_pendingAdds.TryDequeue(out pendingAdd)) |
145 | { | 146 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; |
146 | while (m_pendingAdds.TryDequeue(out pendingAdd)) | ||
147 | { | ||
148 | if (pendingAdd != null && m_packets != null) | ||
149 | { | ||
150 | m_packets[pendingAdd.SequenceNumber] = pendingAdd; | ||
151 | } | ||
152 | } | ||
153 | } | ||
154 | 147 | ||
155 | // Process all the pending removes, including updating statistics and round-trip times | 148 | // Process all the pending removes, including updating statistics and round-trip times |
156 | PendingAck pendingRemove; | 149 | PendingAck pendingRemove; |
157 | OutgoingPacket ackedPacket; | 150 | OutgoingPacket ackedPacket; |
158 | if (m_pendingRemoves != null) | 151 | while (m_pendingRemoves.TryDequeue(out pendingRemove)) |
159 | { | 152 | { |
160 | while (m_pendingRemoves.TryDequeue(out pendingRemove)) | 153 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) |
161 | { | 154 | { |
162 | if (m_pendingRemoves != null && m_packets != null) | 155 | m_packets.Remove(pendingRemove.SequenceNumber); |
156 | |||
157 | // Update stats | ||
158 | Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
159 | |||
160 | if (!pendingRemove.FromResend) | ||
163 | { | 161 | { |
164 | if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) | 162 | // Calculate the round-trip time for this packet and its ACK |
165 | { | 163 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; |
166 | m_packets.Remove(pendingRemove.SequenceNumber); | 164 | if (rtt > 0) |
167 | 165 | ackedPacket.Client.UpdateRoundTrip(rtt); | |
168 | // Update stats | ||
169 | System.Threading.Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); | ||
170 | |||
171 | if (!pendingRemove.FromResend) | ||
172 | { | ||
173 | // Calculate the round-trip time for this packet and its ACK | ||
174 | int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; | ||
175 | if (rtt > 0) | ||
176 | ackedPacket.Client.UpdateRoundTrip(rtt); | ||
177 | } | ||
178 | } | ||
179 | } | 166 | } |
180 | } | 167 | } |
181 | } | 168 | } |
182 | } | 169 | } |
183 | } | 170 | } |
184 | } | 171 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs index c66a4ea..771038e 100644 --- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs +++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs | |||
@@ -41,8 +41,8 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction | |||
41 | /// </summary> | 41 | /// </summary> |
42 | public class AgentAssetTransactions | 42 | public class AgentAssetTransactions |
43 | { | 43 | { |
44 | private static readonly ILog m_log = LogManager.GetLogger( | 44 | // private static readonly ILog m_log = LogManager.GetLogger( |
45 | MethodBase.GetCurrentMethod().DeclaringType); | 45 | // MethodBase.GetCurrentMethod().DeclaringType); |
46 | 46 | ||
47 | // Fields | 47 | // Fields |
48 | private bool m_dumpAssetsToFile; | 48 | private bool m_dumpAssetsToFile; |
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs index 36aaab3..878242a 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs | |||
@@ -49,8 +49,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
49 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] | 49 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] |
50 | public class GetMeshModule : INonSharedRegionModule | 50 | public class GetMeshModule : INonSharedRegionModule |
51 | { | 51 | { |
52 | private static readonly ILog m_log = | 52 | // private static readonly ILog m_log = |
53 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 53 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
54 | |||
54 | private Scene m_scene; | 55 | private Scene m_scene; |
55 | private IAssetService m_assetService; | 56 | private IAssetService m_assetService; |
56 | 57 | ||
@@ -102,7 +103,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
102 | { | 103 | { |
103 | UUID capID = UUID.Random(); | 104 | UUID capID = UUID.Random(); |
104 | 105 | ||
105 | m_log.Info("[GETMESH]: /CAPS/" + capID); | 106 | // m_log.Info("[GETMESH]: /CAPS/" + capID); |
106 | caps.RegisterHandler("GetMesh", | 107 | caps.RegisterHandler("GetMesh", |
107 | new RestHTTPHandler("GET", "/CAPS/" + capID, | 108 | new RestHTTPHandler("GET", "/CAPS/" + capID, |
108 | delegate(Hashtable m_dhttpMethod) | 109 | delegate(Hashtable m_dhttpMethod) |
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs index 1f60e36..6fb8b46 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs | |||
@@ -105,7 +105,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
105 | { | 105 | { |
106 | UUID capID = UUID.Random(); | 106 | UUID capID = UUID.Random(); |
107 | 107 | ||
108 | m_log.InfoFormat("[GETTEXTURE]: /CAPS/{0} in region {1}", capID, m_scene.RegionInfo.RegionName); | 108 | // m_log.InfoFormat("[GETTEXTURE]: /CAPS/{0} in region {1}", capID, m_scene.RegionInfo.RegionName); |
109 | caps.RegisterHandler("GetTexture", new StreamHandler("GET", "/CAPS/" + capID, ProcessGetTexture)); | 109 | caps.RegisterHandler("GetTexture", new StreamHandler("GET", "/CAPS/" + capID, ProcessGetTexture)); |
110 | } | 110 | } |
111 | 111 | ||
@@ -171,7 +171,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
171 | /// <returns>False for "caller try another codec"; true otherwise</returns> | 171 | /// <returns>False for "caller try another codec"; true otherwise</returns> |
172 | private bool FetchTexture(OSHttpRequest httpRequest, OSHttpResponse httpResponse, UUID textureID, string format) | 172 | private bool FetchTexture(OSHttpRequest httpRequest, OSHttpResponse httpResponse, UUID textureID, string format) |
173 | { | 173 | { |
174 | m_log.DebugFormat("[GETTEXTURE]: {0} with requested format {1}", textureID, format); | 174 | // m_log.DebugFormat("[GETTEXTURE]: {0} with requested format {1}", textureID, format); |
175 | AssetBase texture; | 175 | AssetBase texture; |
176 | 176 | ||
177 | string fullID = textureID.ToString(); | 177 | string fullID = textureID.ToString(); |
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs index af26b2b..542af25 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs | |||
@@ -50,8 +50,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
50 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] | 50 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")] |
51 | public class NewFileAgentInventoryVariablePriceModule : INonSharedRegionModule | 51 | public class NewFileAgentInventoryVariablePriceModule : INonSharedRegionModule |
52 | { | 52 | { |
53 | private static readonly ILog m_log = | 53 | // private static readonly ILog m_log = |
54 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 54 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
55 | |||
55 | private Scene m_scene; | 56 | private Scene m_scene; |
56 | private IAssetService m_assetService; | 57 | private IAssetService m_assetService; |
57 | private bool m_dumpAssetsToFile = false; | 58 | private bool m_dumpAssetsToFile = false; |
@@ -104,7 +105,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
104 | { | 105 | { |
105 | UUID capID = UUID.Random(); | 106 | UUID capID = UUID.Random(); |
106 | 107 | ||
107 | m_log.Info("[GETMESH]: /CAPS/" + capID); | 108 | // m_log.Debug("[NEW FILE AGENT INVENTORY VARIABLE PRICE]: /CAPS/" + capID); |
108 | caps.RegisterHandler("NewFileAgentInventoryVariablePrice", | 109 | caps.RegisterHandler("NewFileAgentInventoryVariablePrice", |
109 | 110 | ||
110 | new LLSDStreamhandler<LLSDAssetUploadRequest, LLSDNewFileAngentInventoryVariablePriceReplyResponse>("POST", | 111 | new LLSDStreamhandler<LLSDAssetUploadRequest, LLSDNewFileAngentInventoryVariablePriceReplyResponse>("POST", |
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs index 360a014..ff26264 100644 --- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | |||
@@ -132,8 +132,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
132 | "[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId | 132 | "[ATTACHMENTS MODULE]: Saving avatar attachment. AgentID: " + remoteClient.AgentId |
133 | + ", AttachmentPoint: " + AttachmentPt); | 133 | + ", AttachmentPoint: " + AttachmentPt); |
134 | 134 | ||
135 | if (m_scene.AvatarFactory != null) | ||
136 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); | ||
137 | } | 135 | } |
138 | } | 136 | } |
139 | catch (Exception e) | 137 | catch (Exception e) |
@@ -336,7 +334,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
336 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); | 334 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); |
337 | item = m_scene.InventoryService.GetItem(item); | 335 | item = m_scene.InventoryService.GetItem(item); |
338 | 336 | ||
339 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /*att.UUID*/); | 337 | bool changed = presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID); |
338 | if (changed && m_scene.AvatarFactory != null) | ||
339 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); | ||
340 | } | 340 | } |
341 | 341 | ||
342 | return att.UUID; | 342 | return att.UUID; |
@@ -380,9 +380,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
380 | // XXYY!! | 380 | // XXYY!! |
381 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); | 381 | InventoryItemBase item = new InventoryItemBase(itemID, remoteClient.AgentId); |
382 | item = m_scene.InventoryService.GetItem(item); | 382 | item = m_scene.InventoryService.GetItem(item); |
383 | presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID /* att.UUID */); | 383 | bool changed = presence.Appearance.SetAttachment((int)AttachmentPt, itemID, item.AssetID); |
384 | 384 | if (changed && m_scene.AvatarFactory != null) | |
385 | if (m_scene.AvatarFactory != null) | ||
386 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); | 385 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); |
387 | } | 386 | } |
388 | } | 387 | } |
@@ -402,11 +401,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
402 | ScenePresence presence; | 401 | ScenePresence presence; |
403 | if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) | 402 | if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence)) |
404 | { | 403 | { |
405 | presence.Appearance.DetachAttachment(itemID); | ||
406 | |||
407 | // Save avatar attachment information | 404 | // Save avatar attachment information |
408 | m_log.Debug("[ATTACHMENTS MODULE]: Detaching from UserID: " + remoteClient.AgentId + ", ItemID: " + itemID); | 405 | m_log.Debug("[ATTACHMENTS MODULE]: Detaching from UserID: " + remoteClient.AgentId + ", ItemID: " + itemID); |
409 | if (m_scene.AvatarFactory != null) | 406 | |
407 | bool changed = presence.Appearance.DetachAttachment(itemID); | ||
408 | if (changed && m_scene.AvatarFactory != null) | ||
410 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); | 409 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); |
411 | } | 410 | } |
412 | 411 | ||
@@ -431,9 +430,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments | |||
431 | part.ParentGroup.PrimCount, remoteClient.AgentId, presence.AbsolutePosition)) | 430 | part.ParentGroup.PrimCount, remoteClient.AgentId, presence.AbsolutePosition)) |
432 | return; | 431 | return; |
433 | 432 | ||
434 | presence.Appearance.DetachAttachment(itemID); | 433 | bool changed = presence.Appearance.DetachAttachment(itemID); |
435 | 434 | if (changed && m_scene.AvatarFactory != null) | |
436 | if (m_scene.AvatarFactory != null) | ||
437 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); | 435 | m_scene.AvatarFactory.QueueAppearanceSave(remoteClient.AgentId); |
438 | 436 | ||
439 | part.ParentGroup.DetachToGround(); | 437 | part.ParentGroup.DetachToGround(); |
diff --git a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs index 7d6d191..f8ce444 100644 --- a/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs | |||
@@ -167,7 +167,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
167 | } | 167 | } |
168 | } | 168 | } |
169 | 169 | ||
170 | m_log.InfoFormat("[AVFACTORY]: complete texture check for {0}",client.AgentId); | 170 | m_log.InfoFormat("[AVFACTORY]: complete texture check for {0}", client.AgentId); |
171 | 171 | ||
172 | // If we only found default textures, then the appearance is not cached | 172 | // If we only found default textures, then the appearance is not cached |
173 | return (defonly ? false : true); | 173 | return (defonly ? false : true); |
@@ -187,7 +187,7 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
187 | return; | 187 | return; |
188 | } | 188 | } |
189 | 189 | ||
190 | m_log.InfoFormat("[AVFACTORY]: start SetAppearance for {0}",client.AgentId); | 190 | // m_log.InfoFormat("[AVFACTORY]: start SetAppearance for {0}", client.AgentId); |
191 | 191 | ||
192 | // TODO: This is probably not necessary any longer, just assume the | 192 | // TODO: This is probably not necessary any longer, just assume the |
193 | // textureEntry set implies that the appearance transaction is complete | 193 | // textureEntry set implies that the appearance transaction is complete |
@@ -210,14 +210,16 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory | |||
210 | { | 210 | { |
211 | changed = sp.Appearance.SetTextureEntries(textureEntry) || changed; | 211 | changed = sp.Appearance.SetTextureEntries(textureEntry) || changed; |
212 | 212 | ||
213 | m_log.InfoFormat("[AVFACTORY]: received texture update for {0}",client.AgentId); | 213 | m_log.InfoFormat("[AVFACTORY]: received texture update for {0}", client.AgentId); |
214 | Util.FireAndForget(delegate(object o) { ValidateBakedTextureCache(client,false); }); | 214 | Util.FireAndForget(delegate(object o) { ValidateBakedTextureCache(client,false); }); |
215 | 215 | ||
216 | // This appears to be set only in the final stage of the appearance | 216 | // This appears to be set only in the final stage of the appearance |
217 | // update transaction. In theory, we should be able to do an immediate | 217 | // update transaction. In theory, we should be able to do an immediate |
218 | // appearance send and save here. | 218 | // appearance send and save here. |
219 | 219 | ||
220 | QueueAppearanceSave(client.AgentId); | 220 | // save only if there were changes, send no matter what (doesn't hurt to send twice) |
221 | if (changed) | ||
222 | QueueAppearanceSave(client.AgentId); | ||
221 | QueueAppearanceSend(client.AgentId); | 223 | QueueAppearanceSend(client.AgentId); |
222 | } | 224 | } |
223 | 225 | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs b/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs index 7303fe7..7df2beb 100644 --- a/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Gestures/GesturesModule.cs | |||
@@ -69,7 +69,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gestures | |||
69 | item = invService.GetItem(item); | 69 | item = invService.GetItem(item); |
70 | if (item != null) | 70 | if (item != null) |
71 | { | 71 | { |
72 | item.Flags = 1; | 72 | item.Flags |= 1; |
73 | invService.UpdateItem(item); | 73 | invService.UpdateItem(item); |
74 | } | 74 | } |
75 | else | 75 | else |
@@ -85,7 +85,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gestures | |||
85 | item = invService.GetItem(item); | 85 | item = invService.GetItem(item); |
86 | if (item != null) | 86 | if (item != null) |
87 | { | 87 | { |
88 | item.Flags = 0; | 88 | item.Flags &= ~(uint)1; |
89 | invService.UpdateItem(item); | 89 | invService.UpdateItem(item); |
90 | } | 90 | } |
91 | else | 91 | else |
@@ -93,4 +93,4 @@ namespace OpenSim.Region.CoreModules.Avatar.Gestures | |||
93 | "[GESTURES]: Unable to find gesture to deactivate {0} for {1}", gestureId, client.Name); | 93 | "[GESTURES]: Unable to find gesture to deactivate {0} for {1}", gestureId, client.Name); |
94 | } | 94 | } |
95 | } | 95 | } |
96 | } \ No newline at end of file | 96 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs index 21a61a7..77c7147 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs | |||
@@ -146,7 +146,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
146 | if (!user.IsChildAgent) | 146 | if (!user.IsChildAgent) |
147 | { | 147 | { |
148 | // Local message | 148 | // Local message |
149 | m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", user.Name, toAgentID); | 149 | // m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to root agent {0} {1}", user.Name, toAgentID); |
150 | user.ControllingClient.SendInstantMessage(im); | 150 | user.ControllingClient.SendInstantMessage(im); |
151 | 151 | ||
152 | // Message sent | 152 | // Message sent |
@@ -168,7 +168,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
168 | // Local message | 168 | // Local message |
169 | ScenePresence user = (ScenePresence) scene.Entities[toAgentID]; | 169 | ScenePresence user = (ScenePresence) scene.Entities[toAgentID]; |
170 | 170 | ||
171 | m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to child agent {0} {1}", user.Name, toAgentID); | 171 | // m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to child agent {0} {1}", user.Name, toAgentID); |
172 | user.ControllingClient.SendInstantMessage(im); | 172 | user.ControllingClient.SendInstantMessage(im); |
173 | 173 | ||
174 | // Message sent | 174 | // Message sent |
@@ -177,7 +177,7 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage | |||
177 | } | 177 | } |
178 | } | 178 | } |
179 | 179 | ||
180 | m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to {0} via XMLRPC", im.toAgentID); | 180 | // m_log.DebugFormat("[INSTANT MESSAGE]: Delivering IM to {0} via XMLRPC", im.toAgentID); |
181 | SendGridInstantMessageViaXMLRPC(im, result); | 181 | SendGridInstantMessageViaXMLRPC(im, result); |
182 | 182 | ||
183 | return; | 183 | return; |
diff --git a/OpenSim/Region/CoreModules/Avatar/ObjectCaps/ObjectAdd.cs b/OpenSim/Region/CoreModules/Avatar/ObjectCaps/ObjectAdd.cs index c011776..a0d72ed 100644 --- a/OpenSim/Region/CoreModules/Avatar/ObjectCaps/ObjectAdd.cs +++ b/OpenSim/Region/CoreModules/Avatar/ObjectCaps/ObjectAdd.cs | |||
@@ -43,8 +43,9 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
43 | { | 43 | { |
44 | public class ObjectAdd : IRegionModule | 44 | public class ObjectAdd : IRegionModule |
45 | { | 45 | { |
46 | private static readonly ILog m_log = | 46 | // private static readonly ILog m_log = |
47 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 47 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
48 | |||
48 | private Scene m_scene; | 49 | private Scene m_scene; |
49 | #region IRegionModule Members | 50 | #region IRegionModule Members |
50 | 51 | ||
@@ -63,7 +64,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
63 | { | 64 | { |
64 | UUID capuuid = UUID.Random(); | 65 | UUID capuuid = UUID.Random(); |
65 | 66 | ||
66 | m_log.InfoFormat("[OBJECTADD]: {0}", "/CAPS/OA/" + capuuid + "/"); | 67 | // m_log.InfoFormat("[OBJECTADD]: {0}", "/CAPS/OA/" + capuuid + "/"); |
67 | 68 | ||
68 | caps.RegisterHandler("ObjectAdd", | 69 | caps.RegisterHandler("ObjectAdd", |
69 | new RestHTTPHandler("POST", "/CAPS/OA/" + capuuid + "/", | 70 | new RestHTTPHandler("POST", "/CAPS/OA/" + capuuid + "/", |
diff --git a/OpenSim/Region/CoreModules/Avatar/ObjectCaps/UploadObjectAssetModule.cs b/OpenSim/Region/CoreModules/Avatar/ObjectCaps/UploadObjectAssetModule.cs index 09b9719..3114d7f 100644 --- a/OpenSim/Region/CoreModules/Avatar/ObjectCaps/UploadObjectAssetModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/ObjectCaps/UploadObjectAssetModule.cs | |||
@@ -105,7 +105,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
105 | { | 105 | { |
106 | UUID capID = UUID.Random(); | 106 | UUID capID = UUID.Random(); |
107 | 107 | ||
108 | m_log.Info("[UploadObjectAssetModule]: /CAPS/" + capID); | 108 | // m_log.Debug("[UPLOAD OBJECT ASSET MODULE]: /CAPS/" + capID); |
109 | caps.RegisterHandler("UploadObjectAsset", | 109 | caps.RegisterHandler("UploadObjectAsset", |
110 | new RestHTTPHandler("POST", "/CAPS/OA/" + capID + "/", | 110 | new RestHTTPHandler("POST", "/CAPS/OA/" + capID + "/", |
111 | delegate(Hashtable m_dhttpMethod) | 111 | delegate(Hashtable m_dhttpMethod) |
@@ -156,7 +156,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
156 | } | 156 | } |
157 | catch (Exception ex) | 157 | catch (Exception ex) |
158 | { | 158 | { |
159 | m_log.Error("[UploadObjectAssetModule]: Error deserializing message " + ex.ToString()); | 159 | m_log.Error("[UPLOAD OBJECT ASSET MODULE]: Error deserializing message " + ex.ToString()); |
160 | message = null; | 160 | message = null; |
161 | } | 161 | } |
162 | 162 | ||
@@ -174,7 +174,7 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
174 | Vector3 pos = avatar.AbsolutePosition + (Vector3.UnitX * avatar.Rotation); | 174 | Vector3 pos = avatar.AbsolutePosition + (Vector3.UnitX * avatar.Rotation); |
175 | Quaternion rot = Quaternion.Identity; | 175 | Quaternion rot = Quaternion.Identity; |
176 | Vector3 rootpos = Vector3.Zero; | 176 | Vector3 rootpos = Vector3.Zero; |
177 | Quaternion rootrot = Quaternion.Identity; | 177 | // Quaternion rootrot = Quaternion.Identity; |
178 | 178 | ||
179 | SceneObjectGroup rootGroup = null; | 179 | SceneObjectGroup rootGroup = null; |
180 | SceneObjectGroup[] allparts = new SceneObjectGroup[message.Objects.Length]; | 180 | SceneObjectGroup[] allparts = new SceneObjectGroup[message.Objects.Length]; |
@@ -186,11 +186,9 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
186 | if (i == 0) | 186 | if (i == 0) |
187 | { | 187 | { |
188 | rootpos = obj.Position; | 188 | rootpos = obj.Position; |
189 | rootrot = obj.Rotation; | 189 | // rootrot = obj.Rotation; |
190 | |||
191 | } | 190 | } |
192 | 191 | ||
193 | |||
194 | // Combine the extraparams data into it's ugly blob again.... | 192 | // Combine the extraparams data into it's ugly blob again.... |
195 | //int bytelength = 0; | 193 | //int bytelength = 0; |
196 | //for (int extparams = 0; extparams < obj.ExtraParams.Length; extparams++) | 194 | //for (int extparams = 0; extparams < obj.ExtraParams.Length; extparams++) |
@@ -363,9 +361,8 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
363 | responsedata["str_response_string"] = String.Format("<llsd><map><key>local_id</key>{0}</map></llsd>", ConvertUintToBytes(allparts[0].LocalId)); | 361 | responsedata["str_response_string"] = String.Format("<llsd><map><key>local_id</key>{0}</map></llsd>", ConvertUintToBytes(allparts[0].LocalId)); |
364 | 362 | ||
365 | return responsedata; | 363 | return responsedata; |
366 | |||
367 | |||
368 | } | 364 | } |
365 | |||
369 | private string ConvertUintToBytes(uint val) | 366 | private string ConvertUintToBytes(uint val) |
370 | { | 367 | { |
371 | byte[] resultbytes = Utils.UIntToBytes(val); | 368 | byte[] resultbytes = Utils.UIntToBytes(val); |
@@ -374,4 +371,4 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
374 | return String.Format("<binary encoding=\"base64\">{0}</binary>", Convert.ToBase64String(resultbytes)); | 371 | return String.Format("<binary encoding=\"base64\">{0}</binary>", Convert.ToBase64String(resultbytes)); |
375 | } | 372 | } |
376 | } | 373 | } |
377 | } | 374 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index ddae20f..b0563c5 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |||
@@ -767,6 +767,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
767 | LookupUUIDS icon = (LookupUUIDS)iar.AsyncState; | 767 | LookupUUIDS icon = (LookupUUIDS)iar.AsyncState; |
768 | icon.EndInvoke(iar); | 768 | icon.EndInvoke(iar); |
769 | } | 769 | } |
770 | |||
770 | private void LookupUUID(List<UUID> uuidLst) | 771 | private void LookupUUID(List<UUID> uuidLst) |
771 | { | 772 | { |
772 | LookupUUIDS d = LookupUUIDsAsync; | 773 | LookupUUIDS d = LookupUUIDsAsync; |
@@ -775,6 +776,7 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
775 | LookupUUIDSCompleted, | 776 | LookupUUIDSCompleted, |
776 | d); | 777 | d); |
777 | } | 778 | } |
779 | |||
778 | private void LookupUUIDsAsync(List<UUID> uuidLst) | 780 | private void LookupUUIDsAsync(List<UUID> uuidLst) |
779 | { | 781 | { |
780 | UUID[] uuidarr; | 782 | UUID[] uuidarr; |
@@ -789,12 +791,12 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
789 | // string lookupname = m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); | 791 | // string lookupname = m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); |
790 | 792 | ||
791 | IUserManagement userManager = m_scene.RequestModuleInterface<IUserManagement>(); | 793 | IUserManagement userManager = m_scene.RequestModuleInterface<IUserManagement>(); |
792 | string userName = "Unkown User"; | ||
793 | if (userManager != null) | 794 | if (userManager != null) |
794 | userName = userManager.GetUserName(uuidarr[i]); | 795 | userManager.GetUserName(uuidarr[i]); |
795 | 796 | ||
796 | // we drop it. It gets cached though... so we're ready for the next request. | 797 | // we drop it. It gets cached though... so we're ready for the next request. |
797 | // diva commnent 11/21/2010: uh?!? wft? | 798 | // diva commnent 11/21/2010: uh?!? wft? |
799 | // justincc comment 21/01/2011: A side effect of userManager.GetUserName() I presume. | ||
798 | } | 800 | } |
799 | } | 801 | } |
800 | #endregion | 802 | #endregion |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs index 1ad4db2..9e27ef0 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandChannel.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandChannel.cs | |||
@@ -64,7 +64,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
64 | #endregion | 64 | #endregion |
65 | 65 | ||
66 | private readonly Scene m_scene; | 66 | private readonly Scene m_scene; |
67 | private readonly LandManagementModule m_landManagementModule; | 67 | private readonly LandManagementModule m_landManagementModule; |
68 | 68 | ||
69 | public LandChannel(Scene scene, LandManagementModule landManagementMod) | 69 | public LandChannel(Scene scene, LandManagementModule landManagementMod) |
70 | { | 70 | { |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 4f8e205..70767f7 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -30,6 +30,7 @@ using System.Collections; | |||
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Diagnostics; | 31 | using System.Diagnostics; |
32 | using System.Reflection; | 32 | using System.Reflection; |
33 | using System.Text; | ||
33 | using log4net; | 34 | using log4net; |
34 | using Nini.Config; | 35 | using Nini.Config; |
35 | using OpenMetaverse; | 36 | using OpenMetaverse; |
@@ -37,19 +38,22 @@ using OpenMetaverse.StructuredData; | |||
37 | using OpenMetaverse.Messages.Linden; | 38 | using OpenMetaverse.Messages.Linden; |
38 | using OpenSim.Framework; | 39 | using OpenSim.Framework; |
39 | using OpenSim.Framework.Capabilities; | 40 | using OpenSim.Framework.Capabilities; |
41 | using OpenSim.Framework.Console; | ||
40 | using OpenSim.Framework.Servers; | 42 | using OpenSim.Framework.Servers; |
41 | using OpenSim.Framework.Servers.HttpServer; | 43 | using OpenSim.Framework.Servers.HttpServer; |
42 | using OpenSim.Services.Interfaces; | 44 | using OpenSim.Region.CoreModules.Framework.InterfaceCommander; |
43 | using OpenSim.Region.Framework.Interfaces; | 45 | using OpenSim.Region.Framework.Interfaces; |
44 | using OpenSim.Region.Framework.Scenes; | 46 | using OpenSim.Region.Framework.Scenes; |
45 | using OpenSim.Region.Physics.Manager; | 47 | using OpenSim.Region.Physics.Manager; |
46 | using Caps=OpenSim.Framework.Capabilities.Caps; | 48 | using OpenSim.Services.Interfaces; |
49 | using Caps = OpenSim.Framework.Capabilities.Caps; | ||
47 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 50 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
48 | 51 | ||
49 | namespace OpenSim.Region.CoreModules.World.Land | 52 | namespace OpenSim.Region.CoreModules.World.Land |
50 | { | 53 | { |
51 | // used for caching | 54 | // used for caching |
52 | internal class ExtendedLandData { | 55 | internal class ExtendedLandData |
56 | { | ||
53 | public LandData LandData; | 57 | public LandData LandData; |
54 | public ulong RegionHandle; | 58 | public ulong RegionHandle; |
55 | public uint X, Y; | 59 | public uint X, Y; |
@@ -65,6 +69,9 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
65 | 69 | ||
66 | private LandChannel landChannel; | 70 | private LandChannel landChannel; |
67 | private Scene m_scene; | 71 | private Scene m_scene; |
72 | protected Commander m_commander = new Commander("land"); | ||
73 | |||
74 | protected IUserManagement m_userManager; | ||
68 | 75 | ||
69 | // Minimum for parcels to work is 64m even if we don't actually use them. | 76 | // Minimum for parcels to work is 64m even if we don't actually use them. |
70 | #pragma warning disable 0429 | 77 | #pragma warning disable 0429 |
@@ -127,19 +134,27 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
127 | m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; | 134 | m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate; |
128 | m_scene.EventManager.OnParcelPrimCountTainted += EventManagerOnParcelPrimCountTainted; | 135 | m_scene.EventManager.OnParcelPrimCountTainted += EventManagerOnParcelPrimCountTainted; |
129 | m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps; | 136 | m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps; |
137 | m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole; | ||
130 | 138 | ||
131 | lock (m_scene) | 139 | lock (m_scene) |
132 | { | 140 | { |
133 | m_scene.LandChannel = (ILandChannel)landChannel; | 141 | m_scene.LandChannel = (ILandChannel)landChannel; |
134 | } | 142 | } |
143 | |||
144 | InstallInterfaces(); | ||
135 | } | 145 | } |
136 | 146 | ||
137 | public void RegionLoaded(Scene scene) | 147 | public void RegionLoaded(Scene scene) |
138 | { | 148 | { |
149 | m_userManager = m_scene.RequestModuleInterface<IUserManagement>(); | ||
139 | } | 150 | } |
140 | 151 | ||
141 | public void RemoveRegion(Scene scene) | 152 | public void RemoveRegion(Scene scene) |
142 | { | 153 | { |
154 | // TODO: Also release other event manager listeners here | ||
155 | |||
156 | m_scene.EventManager.OnPluginConsole -= EventManagerOnPluginConsole; | ||
157 | m_scene.UnregisterModuleCommander(m_commander.Name); | ||
143 | } | 158 | } |
144 | 159 | ||
145 | // private bool OnVerifyUserConnection(ScenePresence scenePresence, out string reason) | 160 | // private bool OnVerifyUserConnection(ScenePresence scenePresence, out string reason) |
@@ -148,6 +163,29 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
148 | // reason = "You are not allowed to enter this sim."; | 163 | // reason = "You are not allowed to enter this sim."; |
149 | // return nearestParcel != null; | 164 | // return nearestParcel != null; |
150 | // } | 165 | // } |
166 | |||
167 | /// <summary> | ||
168 | /// Processes commandline input. Do not call directly. | ||
169 | /// </summary> | ||
170 | /// <param name="args">Commandline arguments</param> | ||
171 | protected void EventManagerOnPluginConsole(string[] args) | ||
172 | { | ||
173 | if (args[0] == "land") | ||
174 | { | ||
175 | if (args.Length == 1) | ||
176 | { | ||
177 | m_commander.ProcessConsoleCommand("help", new string[0]); | ||
178 | return; | ||
179 | } | ||
180 | |||
181 | string[] tmpArgs = new string[args.Length - 2]; | ||
182 | int i; | ||
183 | for (i = 2; i < args.Length; i++) | ||
184 | tmpArgs[i - 2] = args[i]; | ||
185 | |||
186 | m_commander.ProcessConsoleCommand(args[1], tmpArgs); | ||
187 | } | ||
188 | } | ||
151 | 189 | ||
152 | void EventManagerOnNewClient(IClientAPI client) | 190 | void EventManagerOnNewClient(IClientAPI client) |
153 | { | 191 | { |
@@ -209,11 +247,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
209 | } | 247 | } |
210 | } | 248 | } |
211 | 249 | ||
212 | |||
213 | public void PostInitialise() | ||
214 | { | ||
215 | } | ||
216 | |||
217 | public void Close() | 250 | public void Close() |
218 | { | 251 | { |
219 | } | 252 | } |
@@ -223,11 +256,6 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
223 | get { return "LandManagementModule"; } | 256 | get { return "LandManagementModule"; } |
224 | } | 257 | } |
225 | 258 | ||
226 | public bool IsSharedModule | ||
227 | { | ||
228 | get { return false; } | ||
229 | } | ||
230 | |||
231 | #endregion | 259 | #endregion |
232 | 260 | ||
233 | #region Parcel Add/Remove/Get/Create | 261 | #region Parcel Add/Remove/Get/Create |
@@ -1591,5 +1619,44 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1591 | 1619 | ||
1592 | UpdateLandObject(localID, land.LandData); | 1620 | UpdateLandObject(localID, land.LandData); |
1593 | } | 1621 | } |
1622 | |||
1623 | protected void InstallInterfaces() | ||
1624 | { | ||
1625 | Command showCommand = | ||
1626 | new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowParcelsCommand, "Shows all parcels on the current region."); | ||
1627 | |||
1628 | m_commander.RegisterCommand("show", showCommand); | ||
1629 | |||
1630 | // Add this to our scene so scripts can call these functions | ||
1631 | m_scene.RegisterModuleCommander(m_commander); | ||
1632 | } | ||
1633 | |||
1634 | protected void ShowParcelsCommand(Object[] args) | ||
1635 | { | ||
1636 | StringBuilder report = new StringBuilder(); | ||
1637 | |||
1638 | report.AppendFormat("Land information for {0}\n", m_scene.RegionInfo.RegionName); | ||
1639 | report.AppendFormat( | ||
1640 | "{0,-20} {1,-9} {2,-18} {3,-18} {4,-20}\n", | ||
1641 | "Parcel Name", | ||
1642 | "Area", | ||
1643 | "Starts", | ||
1644 | "Ends", | ||
1645 | "Owner"); | ||
1646 | |||
1647 | lock (m_landList) | ||
1648 | { | ||
1649 | foreach (ILandObject lo in m_landList.Values) | ||
1650 | { | ||
1651 | LandData ld = lo.LandData; | ||
1652 | |||
1653 | report.AppendFormat( | ||
1654 | "{0,-20} {1,-9} {2,-18} {3,-18} {4,-20}\n", | ||
1655 | ld.Name, ld.Area, lo.StartPoint, lo.EndPoint, m_userManager.GetUserName(ld.OwnerID)); | ||
1656 | } | ||
1657 | } | ||
1658 | |||
1659 | MainConsole.Instance.Output(report.ToString()); | ||
1660 | } | ||
1594 | } | 1661 | } |
1595 | } | 1662 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 3e41c55..b90e307 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -77,7 +77,43 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
77 | { | 77 | { |
78 | get { return m_scene.RegionInfo.RegionID; } | 78 | get { return m_scene.RegionInfo.RegionID; } |
79 | } | 79 | } |
80 | 80 | ||
81 | public Vector3 StartPoint | ||
82 | { | ||
83 | get | ||
84 | { | ||
85 | for (int y = 0; y < landArrayMax; y++) | ||
86 | { | ||
87 | for (int x = 0; x < landArrayMax; x++) | ||
88 | { | ||
89 | if (LandBitmap[x, y]) | ||
90 | return new Vector3(x * 4, y * 4, 0); | ||
91 | } | ||
92 | } | ||
93 | |||
94 | return new Vector3(-1, -1, -1); | ||
95 | } | ||
96 | } | ||
97 | |||
98 | public Vector3 EndPoint | ||
99 | { | ||
100 | get | ||
101 | { | ||
102 | for (int y = landArrayMax - 1; y >= 0; y--) | ||
103 | { | ||
104 | for (int x = landArrayMax - 1; x >= 0; x--) | ||
105 | { | ||
106 | if (LandBitmap[x, y]) | ||
107 | { | ||
108 | return new Vector3(x * 4, y * 4, 0); | ||
109 | } | ||
110 | } | ||
111 | } | ||
112 | |||
113 | return new Vector3(-1, -1, -1); | ||
114 | } | ||
115 | } | ||
116 | |||
81 | #region Constructors | 117 | #region Constructors |
82 | 118 | ||
83 | public LandObject(UUID owner_id, bool is_group_owned, Scene scene) | 119 | public LandObject(UUID owner_id, bool is_group_owned, Scene scene) |
@@ -96,7 +132,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
96 | #region Member Functions | 132 | #region Member Functions |
97 | 133 | ||
98 | #region General Functions | 134 | #region General Functions |
99 | 135 | ||
100 | /// <summary> | 136 | /// <summary> |
101 | /// Checks to see if this land object contains a point | 137 | /// Checks to see if this land object contains a point |
102 | /// </summary> | 138 | /// </summary> |
@@ -217,6 +253,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
217 | ParcelFlags.AllowDamage | | 253 | ParcelFlags.AllowDamage | |
218 | ParcelFlags.CreateObjects | | 254 | ParcelFlags.CreateObjects | |
219 | ParcelFlags.RestrictPushObject | | 255 | ParcelFlags.RestrictPushObject | |
256 | ParcelFlags.AllowOtherScripts | | ||
220 | ParcelFlags.AllowGroupScripts | | 257 | ParcelFlags.AllowGroupScripts | |
221 | ParcelFlags.CreateGroupObjects | | 258 | ParcelFlags.CreateGroupObjects | |
222 | ParcelFlags.AllowAPrimitiveEntry | | 259 | ParcelFlags.AllowAPrimitiveEntry | |
diff --git a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs index ec97acd..0e861a1 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/SerialiserModule.cs | |||
@@ -46,7 +46,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser | |||
46 | private static readonly ILog m_log = | 46 | private static readonly ILog m_log = |
47 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 47 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
48 | 48 | ||
49 | private Commander m_commander = new Commander("export"); | 49 | // private Commander m_commander = new Commander("export"); |
50 | private List<Scene> m_regions = new List<Scene>(); | 50 | private List<Scene> m_regions = new List<Scene>(); |
51 | private string m_savedir = "exports"; | 51 | private string m_savedir = "exports"; |
52 | private List<IFileSerialiser> m_serialisers = new List<IFileSerialiser>(); | 52 | private List<IFileSerialiser> m_serialisers = new List<IFileSerialiser>(); |
@@ -77,14 +77,13 @@ namespace OpenSim.Region.CoreModules.World.Serialiser | |||
77 | m_serialisers.Add(new SerialiseObjects()); | 77 | m_serialisers.Add(new SerialiseObjects()); |
78 | } | 78 | } |
79 | 79 | ||
80 | LoadCommanderCommands(); | 80 | // LoadCommanderCommands(); |
81 | } | 81 | } |
82 | 82 | ||
83 | |||
84 | public void AddRegion(Scene scene) | 83 | public void AddRegion(Scene scene) |
85 | { | 84 | { |
86 | scene.RegisterModuleCommander(m_commander); | 85 | // scene.RegisterModuleCommander(m_commander); |
87 | scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole; | 86 | // scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole; |
88 | scene.RegisterModuleInterface<IRegionSerialiserModule>(this); | 87 | scene.RegisterModuleInterface<IRegionSerialiserModule>(this); |
89 | 88 | ||
90 | lock (m_regions) | 89 | lock (m_regions) |
@@ -211,18 +210,18 @@ namespace OpenSim.Region.CoreModules.World.Serialiser | |||
211 | 210 | ||
212 | #endregion | 211 | #endregion |
213 | 212 | ||
214 | private void EventManager_OnPluginConsole(string[] args) | 213 | // private void EventManager_OnPluginConsole(string[] args) |
215 | { | 214 | // { |
216 | if (args[0] == "export") | 215 | // if (args[0] == "export") |
217 | { | 216 | // { |
218 | string[] tmpArgs = new string[args.Length - 2]; | 217 | // string[] tmpArgs = new string[args.Length - 2]; |
219 | int i = 0; | 218 | // int i = 0; |
220 | for (i = 2; i < args.Length; i++) | 219 | // for (i = 2; i < args.Length; i++) |
221 | tmpArgs[i - 2] = args[i]; | 220 | // tmpArgs[i - 2] = args[i]; |
222 | 221 | // | |
223 | m_commander.ProcessConsoleCommand(args[1], tmpArgs); | 222 | // m_commander.ProcessConsoleCommand(args[1], tmpArgs); |
224 | } | 223 | // } |
225 | } | 224 | // } |
226 | 225 | ||
227 | private void InterfaceSaveRegion(Object[] args) | 226 | private void InterfaceSaveRegion(Object[] args) |
228 | { | 227 | { |
@@ -245,15 +244,15 @@ namespace OpenSim.Region.CoreModules.World.Serialiser | |||
245 | } | 244 | } |
246 | } | 245 | } |
247 | 246 | ||
248 | private void LoadCommanderCommands() | 247 | // private void LoadCommanderCommands() |
249 | { | 248 | // { |
250 | Command serialiseSceneCommand = new Command("save", CommandIntentions.COMMAND_NON_HAZARDOUS, InterfaceSaveRegion, "Saves the named region into the exports directory."); | 249 | // Command serialiseSceneCommand = new Command("save", CommandIntentions.COMMAND_NON_HAZARDOUS, InterfaceSaveRegion, "Saves the named region into the exports directory."); |
251 | serialiseSceneCommand.AddArgument("region-name", "The name of the region you wish to export", "String"); | 250 | // serialiseSceneCommand.AddArgument("region-name", "The name of the region you wish to export", "String"); |
252 | 251 | // | |
253 | Command serialiseAllScenesCommand = new Command("save-all",CommandIntentions.COMMAND_NON_HAZARDOUS, InterfaceSaveAllRegions, "Saves all regions into the exports directory."); | 252 | // Command serialiseAllScenesCommand = new Command("save-all",CommandIntentions.COMMAND_NON_HAZARDOUS, InterfaceSaveAllRegions, "Saves all regions into the exports directory."); |
254 | 253 | // | |
255 | m_commander.RegisterCommand("save", serialiseSceneCommand); | 254 | // m_commander.RegisterCommand("save", serialiseSceneCommand); |
256 | m_commander.RegisterCommand("save-all", serialiseAllScenesCommand); | 255 | // m_commander.RegisterCommand("save-all", serialiseAllScenesCommand); |
257 | } | 256 | // } |
258 | } | 257 | } |
259 | } | 258 | } |
diff --git a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs index 8df44fe..09c0ebb 100644 --- a/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs +++ b/OpenSim/Region/CoreModules/World/Sound/SoundModule.cs | |||
@@ -38,7 +38,7 @@ namespace OpenSim.Region.CoreModules.World.Sound | |||
38 | { | 38 | { |
39 | public class SoundModule : IRegionModule, ISoundModule | 39 | public class SoundModule : IRegionModule, ISoundModule |
40 | { | 40 | { |
41 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 41 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
42 | 42 | ||
43 | protected Scene m_scene; | 43 | protected Scene m_scene; |
44 | 44 | ||
diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs index af59d7a..522a7eb 100644 --- a/OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs +++ b/OpenSim/Region/CoreModules/World/Warp3DMap/Perlin.cs | |||
@@ -85,9 +85,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap | |||
85 | public static float noise1(float arg) | 85 | public static float noise1(float arg) |
86 | { | 86 | { |
87 | int bx0, bx1; | 87 | int bx0, bx1; |
88 | float rx0, rx1, sx, t, u, v, a; | 88 | float rx0, rx1, sx, t, u, v; |
89 | |||
90 | a = arg; | ||
91 | 89 | ||
92 | t = arg + N; | 90 | t = arg + N; |
93 | bx0 = ((int)t) & BM; | 91 | bx0 = ((int)t) & BM; |
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index f9d28b9..e0f36a2 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs | |||
@@ -641,7 +641,17 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
641 | lock (m_openRequests) | 641 | lock (m_openRequests) |
642 | m_openRequests.Add(requestID, mrs); | 642 | m_openRequests.Add(requestID, mrs); |
643 | 643 | ||
644 | WebRequest mapitemsrequest = WebRequest.Create(httpserver); | 644 | WebRequest mapitemsrequest = null; |
645 | try | ||
646 | { | ||
647 | mapitemsrequest = WebRequest.Create(httpserver); | ||
648 | } | ||
649 | catch (Exception e) | ||
650 | { | ||
651 | m_log.DebugFormat("[WORLD MAP]: Access to {0} failed with {1}", httpserver, e); | ||
652 | return new OSDMap(); | ||
653 | } | ||
654 | |||
645 | mapitemsrequest.Method = "POST"; | 655 | mapitemsrequest.Method = "POST"; |
646 | mapitemsrequest.ContentType = "application/xml+llsd"; | 656 | mapitemsrequest.ContentType = "application/xml+llsd"; |
647 | OSDMap RAMap = new OSDMap(); | 657 | OSDMap RAMap = new OSDMap(); |
diff --git a/OpenSim/Region/Framework/Interfaces/ILandObject.cs b/OpenSim/Region/Framework/Interfaces/ILandObject.cs index 585eb00..576b645 100644 --- a/OpenSim/Region/Framework/Interfaces/ILandObject.cs +++ b/OpenSim/Region/Framework/Interfaces/ILandObject.cs | |||
@@ -43,7 +43,21 @@ namespace OpenSim.Region.Framework.Interfaces | |||
43 | LandData LandData { get; set; } | 43 | LandData LandData { get; set; } |
44 | bool[,] LandBitmap { get; set; } | 44 | bool[,] LandBitmap { get; set; } |
45 | UUID RegionUUID { get; } | 45 | UUID RegionUUID { get; } |
46 | |||
47 | /// <summary> | ||
48 | /// The start point for the land object. This is the western-most point as one scans land working from | ||
49 | /// north to south. | ||
50 | /// </summary> | ||
51 | Vector3 StartPoint { get; } | ||
52 | |||
53 | /// <summary> | ||
54 | /// The end point for the land object. This is the eastern-most point as one scans land working from | ||
55 | /// south to north. | ||
56 | /// </summary> | ||
57 | Vector3 EndPoint { get; } | ||
58 | |||
46 | bool ContainsPoint(int x, int y); | 59 | bool ContainsPoint(int x, int y); |
60 | |||
47 | ILandObject Copy(); | 61 | ILandObject Copy(); |
48 | 62 | ||
49 | void SendLandUpdateToAvatarsOverMe(); | 63 | void SendLandUpdateToAvatarsOverMe(); |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 12fd813..dc08b49 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -498,12 +498,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
498 | get { return m_sceneGraph.Entities; } | 498 | get { return m_sceneGraph.Entities; } |
499 | } | 499 | } |
500 | 500 | ||
501 | public Dictionary<UUID, ScenePresence> m_restorePresences | ||
502 | { | ||
503 | get { return m_sceneGraph.RestorePresences; } | ||
504 | set { m_sceneGraph.RestorePresences = value; } | ||
505 | } | ||
506 | |||
507 | #endregion Properties | 501 | #endregion Properties |
508 | 502 | ||
509 | #region Constructors | 503 | #region Constructors |
@@ -2483,56 +2477,26 @@ namespace OpenSim.Region.Framework.Scenes | |||
2483 | (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0; | 2477 | (aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaLogin) != 0; |
2484 | 2478 | ||
2485 | CheckHeartbeat(); | 2479 | CheckHeartbeat(); |
2486 | ScenePresence presence; | ||
2487 | 2480 | ||
2488 | if (m_restorePresences.ContainsKey(client.AgentId)) | 2481 | if (GetScenePresence(client.AgentId) == null) // ensure there is no SP here |
2489 | { | 2482 | { |
2490 | m_log.DebugFormat("[SCENE]: Restoring agent {0} {1} in {2}", client.Name, client.AgentId, RegionInfo.RegionName); | 2483 | m_log.Debug("[SCENE]: Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName); |
2491 | 2484 | ||
2492 | m_clientManager.Add(client); | 2485 | m_clientManager.Add(client); |
2493 | SubscribeToClientEvents(client); | 2486 | SubscribeToClientEvents(client); |
2494 | 2487 | ||
2495 | presence = m_restorePresences[client.AgentId]; | 2488 | ScenePresence sp = m_sceneGraph.CreateAndAddChildScenePresence(client, aCircuit.Appearance); |
2496 | m_restorePresences.Remove(client.AgentId); | 2489 | m_eventManager.TriggerOnNewPresence(sp); |
2497 | |||
2498 | // This is one of two paths to create avatars that are | ||
2499 | // used. This tends to get called more in standalone | ||
2500 | // than grid, not really sure why, but as such needs | ||
2501 | // an explicity appearance lookup here. | ||
2502 | AvatarAppearance appearance = null; | ||
2503 | GetAvatarAppearance(client, out appearance); | ||
2504 | presence.Appearance = appearance; | ||
2505 | 2490 | ||
2506 | presence.initializeScenePresence(client, RegionInfo, this); | 2491 | sp.TeleportFlags = (TeleportFlags)aCircuit.teleportFlags; |
2507 | 2492 | ||
2508 | m_sceneGraph.AddScenePresence(presence); | 2493 | // HERE!!! Do the initial attachments right here |
2509 | 2494 | // first agent upon login is a root agent by design. | |
2510 | lock (m_restorePresences) | 2495 | // All other AddNewClient calls find aCircuit.child to be true |
2496 | if (aCircuit.child == false) | ||
2511 | { | 2497 | { |
2512 | Monitor.PulseAll(m_restorePresences); | 2498 | sp.IsChildAgent = false; |
2513 | } | 2499 | Util.FireAndForget(delegate(object o) { sp.RezAttachments(); }); |
2514 | } | ||
2515 | else | ||
2516 | { | ||
2517 | if (GetScenePresence(client.AgentId) == null) // ensure there is no SP here | ||
2518 | { | ||
2519 | m_log.Debug("[SCENE]: Adding new agent " + client.Name + " to scene " + RegionInfo.RegionName); | ||
2520 | |||
2521 | m_clientManager.Add(client); | ||
2522 | SubscribeToClientEvents(client); | ||
2523 | |||
2524 | ScenePresence sp = CreateAndAddScenePresence(client); | ||
2525 | if (aCircuit != null) | ||
2526 | sp.Appearance = aCircuit.Appearance; | ||
2527 | |||
2528 | // HERE!!! Do the initial attachments right here | ||
2529 | // first agent upon login is a root agent by design. | ||
2530 | // All other AddNewClient calls find aCircuit.child to be true | ||
2531 | if (aCircuit == null || (aCircuit != null && aCircuit.child == false)) | ||
2532 | { | ||
2533 | sp.IsChildAgent = false; | ||
2534 | Util.FireAndForget(delegate(object o) { sp.RezAttachments(); }); | ||
2535 | } | ||
2536 | } | 2500 | } |
2537 | } | 2501 | } |
2538 | 2502 | ||
@@ -2997,25 +2961,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2997 | } | 2961 | } |
2998 | 2962 | ||
2999 | /// <summary> | 2963 | /// <summary> |
3000 | /// Create a child agent scene presence and add it to this scene. | ||
3001 | /// </summary> | ||
3002 | /// <param name="client"></param> | ||
3003 | /// <returns></returns> | ||
3004 | protected virtual ScenePresence CreateAndAddScenePresence(IClientAPI client) | ||
3005 | { | ||
3006 | CheckHeartbeat(); | ||
3007 | AvatarAppearance appearance = null; | ||
3008 | GetAvatarAppearance(client, out appearance); | ||
3009 | |||
3010 | ScenePresence avatar = m_sceneGraph.CreateAndAddChildScenePresence(client, appearance); | ||
3011 | //avatar.KnownRegions = GetChildrenSeeds(avatar.UUID); | ||
3012 | |||
3013 | m_eventManager.TriggerOnNewPresence(avatar); | ||
3014 | |||
3015 | return avatar; | ||
3016 | } | ||
3017 | |||
3018 | /// <summary> | ||
3019 | /// Get the avatar apperance for the given client. | 2964 | /// Get the avatar apperance for the given client. |
3020 | /// </summary> | 2965 | /// </summary> |
3021 | /// <param name="client"></param> | 2966 | /// <param name="client"></param> |
@@ -3324,6 +3269,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
3324 | } | 3269 | } |
3325 | else | 3270 | else |
3326 | { | 3271 | { |
3272 | // Let the SP know how we got here. This has a lot of interesting | ||
3273 | // uses down the line. | ||
3274 | sp.TeleportFlags = (TeleportFlags)teleportFlags; | ||
3275 | |||
3327 | if (sp.IsChildAgent) | 3276 | if (sp.IsChildAgent) |
3328 | { | 3277 | { |
3329 | m_log.DebugFormat( | 3278 | m_log.DebugFormat( |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index a2ed54f..969ff13 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -73,7 +73,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
73 | protected List<ScenePresence> m_scenePresenceArray = new List<ScenePresence>(); | 73 | protected List<ScenePresence> m_scenePresenceArray = new List<ScenePresence>(); |
74 | 74 | ||
75 | protected internal EntityManager Entities = new EntityManager(); | 75 | protected internal EntityManager Entities = new EntityManager(); |
76 | protected internal Dictionary<UUID, ScenePresence> RestorePresences = new Dictionary<UUID, ScenePresence>(); | ||
77 | 76 | ||
78 | protected RegionInfo m_regInfo; | 77 | protected RegionInfo m_regInfo; |
79 | protected Scene m_parentScene; | 78 | protected Scene m_parentScene; |
@@ -564,8 +563,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
564 | { | 563 | { |
565 | ScenePresence newAvatar = null; | 564 | ScenePresence newAvatar = null; |
566 | 565 | ||
566 | // ScenePresence always defaults to child agent | ||
567 | newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance); | 567 | newAvatar = new ScenePresence(client, m_parentScene, m_regInfo, appearance); |
568 | newAvatar.IsChildAgent = true; | ||
569 | 568 | ||
570 | AddScenePresence(newAvatar); | 569 | AddScenePresence(newAvatar); |
571 | 570 | ||
@@ -578,6 +577,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
578 | /// <param name="presence"></param> | 577 | /// <param name="presence"></param> |
579 | protected internal void AddScenePresence(ScenePresence presence) | 578 | protected internal void AddScenePresence(ScenePresence presence) |
580 | { | 579 | { |
580 | // Always a child when added to the scene | ||
581 | bool child = presence.IsChildAgent; | 581 | bool child = presence.IsChildAgent; |
582 | 582 | ||
583 | if (child) | 583 | if (child) |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 91bb3a5..67e59c6 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -178,6 +178,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
178 | { | 178 | { |
179 | item.LastOwnerID = item.OwnerID; | 179 | item.LastOwnerID = item.OwnerID; |
180 | item.OwnerID = ownerId; | 180 | item.OwnerID = ownerId; |
181 | item.PermsMask = 0; | ||
182 | item.PermsGranter = UUID.Zero; | ||
181 | } | 183 | } |
182 | } | 184 | } |
183 | } | 185 | } |
@@ -695,7 +697,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
695 | { | 697 | { |
696 | item.ParentID = m_part.UUID; | 698 | item.ParentID = m_part.UUID; |
697 | item.ParentPartID = m_part.UUID; | 699 | item.ParentPartID = m_part.UUID; |
698 | item.Flags = m_items[item.ItemID].Flags; | ||
699 | 700 | ||
700 | // If group permissions have been set on, check that the groupID is up to date in case it has | 701 | // If group permissions have been set on, check that the groupID is up to date in case it has |
701 | // changed since permissions were last set. | 702 | // changed since permissions were last set. |
@@ -850,7 +851,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
850 | /// <param name="xferManager"></param> | 851 | /// <param name="xferManager"></param> |
851 | public void RequestInventoryFile(IClientAPI client, IXfer xferManager) | 852 | public void RequestInventoryFile(IClientAPI client, IXfer xferManager) |
852 | { | 853 | { |
853 | bool changed = CreateInventoryFile(); | 854 | CreateInventoryFile(); |
854 | 855 | ||
855 | if (m_inventorySerial == 0) // No inventory | 856 | if (m_inventorySerial == 0) // No inventory |
856 | { | 857 | { |
@@ -1013,6 +1014,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1013 | item.BasePermissions &= item.NextPermissions; | 1014 | item.BasePermissions &= item.NextPermissions; |
1014 | item.EveryonePermissions &= item.NextPermissions; | 1015 | item.EveryonePermissions &= item.NextPermissions; |
1015 | item.OwnerChanged = true; | 1016 | item.OwnerChanged = true; |
1017 | item.PermsMask = 0; | ||
1018 | item.PermsGranter = UUID.Zero; | ||
1016 | } | 1019 | } |
1017 | } | 1020 | } |
1018 | } | 1021 | } |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 3a40196..1c276fa 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -130,6 +130,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
130 | private bool m_updateflag; | 130 | private bool m_updateflag; |
131 | private byte m_movementflag; | 131 | private byte m_movementflag; |
132 | private Vector3? m_forceToApply; | 132 | private Vector3? m_forceToApply; |
133 | private TeleportFlags m_teleportFlags; | ||
134 | public TeleportFlags TeleportFlags | ||
135 | { | ||
136 | get { return m_teleportFlags; } | ||
137 | set { m_teleportFlags = value; } | ||
138 | } | ||
139 | |||
133 | private uint m_requestedSitTargetID; | 140 | private uint m_requestedSitTargetID; |
134 | private UUID m_requestedSitTargetUUID; | 141 | private UUID m_requestedSitTargetUUID; |
135 | public bool SitGround = false; | 142 | public bool SitGround = false; |
@@ -928,10 +935,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
928 | //else | 935 | //else |
929 | // m_log.ErrorFormat("[SCENE]: Could not find user info for {0} when making it a root agent", m_uuid); | 936 | // m_log.ErrorFormat("[SCENE]: Could not find user info for {0} when making it a root agent", m_uuid); |
930 | 937 | ||
931 | // On the next prim update, all objects will be sent | ||
932 | // | ||
933 | m_sceneViewer.Reset(); | ||
934 | |||
935 | m_isChildAgent = false; | 938 | m_isChildAgent = false; |
936 | 939 | ||
937 | // send the animations of the other presences to me | 940 | // send the animations of the other presences to me |
@@ -953,6 +956,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
953 | /// </summary> | 956 | /// </summary> |
954 | public void MakeChildAgent() | 957 | public void MakeChildAgent() |
955 | { | 958 | { |
959 | // Reset these so that teleporting in and walking out isn't seen | ||
960 | // as teleporting back | ||
961 | m_teleportFlags = TeleportFlags.Default; | ||
962 | |||
956 | // It looks like m_animator is set to null somewhere, and MakeChild | 963 | // It looks like m_animator is set to null somewhere, and MakeChild |
957 | // is called after that. Probably in aborted teleports. | 964 | // is called after that. Probably in aborted teleports. |
958 | if (m_animator == null) | 965 | if (m_animator == null) |
@@ -1108,7 +1115,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1108 | /// </summary> | 1115 | /// </summary> |
1109 | public void CompleteMovement(IClientAPI client) | 1116 | public void CompleteMovement(IClientAPI client) |
1110 | { | 1117 | { |
1111 | DateTime startTime = DateTime.Now; | 1118 | // DateTime startTime = DateTime.Now; |
1112 | 1119 | ||
1113 | m_log.DebugFormat( | 1120 | m_log.DebugFormat( |
1114 | "[SCENE PRESENCE]: Completing movement of {0} into region {1}", | 1121 | "[SCENE PRESENCE]: Completing movement of {0} into region {1}", |
@@ -1161,9 +1168,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1161 | friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); | 1168 | friendsModule.SendFriendsOnlineIfNeeded(ControllingClient); |
1162 | } | 1169 | } |
1163 | 1170 | ||
1164 | m_log.DebugFormat( | 1171 | // m_log.DebugFormat( |
1165 | "[SCENE PRESENCE]: Completing movement of {0} into region {1} took {2}ms", | 1172 | // "[SCENE PRESENCE]: Completing movement of {0} into region {1} took {2}ms", |
1166 | client.Name, Scene.RegionInfo.RegionName, (DateTime.Now - startTime).Milliseconds); | 1173 | // client.Name, Scene.RegionInfo.RegionName, (DateTime.Now - startTime).Milliseconds); |
1167 | } | 1174 | } |
1168 | 1175 | ||
1169 | /// <summary> | 1176 | /// <summary> |
@@ -2952,10 +2959,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2952 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) | 2959 | if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0) |
2953 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); | 2960 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); |
2954 | 2961 | ||
2955 | // Sends out the objects in the user's draw distance if m_sendTasksToChild is true. | ||
2956 | if (m_scene.m_seeIntoRegionFromNeighbor) | ||
2957 | m_sceneViewer.Reset(); | ||
2958 | |||
2959 | //cAgentData.AVHeight; | 2962 | //cAgentData.AVHeight; |
2960 | m_rootRegionHandle = cAgentData.RegionHandle; | 2963 | m_rootRegionHandle = cAgentData.RegionHandle; |
2961 | //m_velocity = cAgentData.Velocity; | 2964 | //m_velocity = cAgentData.Velocity; |
diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs new file mode 100644 index 0000000..87d067c --- /dev/null +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs | |||
@@ -0,0 +1,348 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using System.Text; | ||
32 | using log4net; | ||
33 | using Mono.Addins; | ||
34 | using Nini.Config; | ||
35 | using OpenMetaverse; | ||
36 | using OpenSim.Framework; | ||
37 | using OpenSim.Framework.Console; | ||
38 | using OpenSim.Framework.Statistics; | ||
39 | using OpenSim.Region.ClientStack.LindenUDP; | ||
40 | using OpenSim.Region.Framework.Interfaces; | ||
41 | using OpenSim.Region.Framework.Scenes; | ||
42 | |||
43 | namespace OpenSim.Region.CoreModules.UDP.Linden | ||
44 | { | ||
45 | /// <summary> | ||
46 | /// A module that just holds commands for inspecting the current state of the Linden UDP stack. | ||
47 | /// </summary> | ||
48 | /// <remarks> | ||
49 | /// All actual client stack functionality remains in OpenSim.Region.ClientStack.LindenUDP | ||
50 | /// </remarks> | ||
51 | [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LindenUDPInfoModule")] | ||
52 | public class LindenUDPInfoModule : ISharedRegionModule | ||
53 | { | ||
54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
55 | |||
56 | protected Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); | ||
57 | |||
58 | public string Name { get { return "Linden UDP Module"; } } | ||
59 | |||
60 | public Type ReplaceableInterface { get { return null; } } | ||
61 | |||
62 | public void Initialise(IConfigSource source) | ||
63 | { | ||
64 | // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: INITIALIZED MODULE"); | ||
65 | } | ||
66 | |||
67 | public void PostInitialise() | ||
68 | { | ||
69 | // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: POST INITIALIZED MODULE"); | ||
70 | } | ||
71 | |||
72 | public void Close() | ||
73 | { | ||
74 | // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: CLOSED MODULE"); | ||
75 | } | ||
76 | |||
77 | public void AddRegion(Scene scene) | ||
78 | { | ||
79 | // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} ADDED", scene.RegionInfo.RegionName); | ||
80 | |||
81 | lock (m_scenes) | ||
82 | m_scenes[scene.RegionInfo.RegionID] = scene; | ||
83 | |||
84 | scene.AddCommand( | ||
85 | this, "show queues", | ||
86 | "show queues [full]", | ||
87 | "Show queue data for each client", | ||
88 | "Without the 'full' option, only root agents are shown." | ||
89 | + " With the 'full' option child agents are also shown.", | ||
90 | ShowQueuesReport); | ||
91 | |||
92 | scene.AddCommand( | ||
93 | this, "show throttles", | ||
94 | "show throttles [full]", | ||
95 | "Show throttle settings for each client and for the server overall", | ||
96 | "Without the 'full' option, only root agents are shown." | ||
97 | + " With the 'full' option child agents are also shown.", | ||
98 | ShowThrottlesReport); | ||
99 | } | ||
100 | |||
101 | public void RemoveRegion(Scene scene) | ||
102 | { | ||
103 | // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} REMOVED", scene.RegionInfo.RegionName); | ||
104 | |||
105 | lock (m_scenes) | ||
106 | m_scenes.Remove(scene.RegionInfo.RegionID); | ||
107 | } | ||
108 | |||
109 | public void RegionLoaded(Scene scene) | ||
110 | { | ||
111 | // m_log.DebugFormat("[LINDEN UDP INFO MODULE]: REGION {0} LOADED", scene.RegionInfo.RegionName); | ||
112 | } | ||
113 | |||
114 | protected void ShowQueuesReport(string module, string[] cmd) | ||
115 | { | ||
116 | MainConsole.Instance.Output(GetQueuesReport(cmd)); | ||
117 | } | ||
118 | |||
119 | protected void ShowThrottlesReport(string module, string[] cmd) | ||
120 | { | ||
121 | MainConsole.Instance.Output(GetThrottlesReport(cmd)); | ||
122 | } | ||
123 | |||
124 | protected string GetColumnEntry(string entry, int maxLength, int columnPadding) | ||
125 | { | ||
126 | return string.Format( | ||
127 | "{0,-" + maxLength + "}{1,-" + columnPadding + "}", | ||
128 | entry.Length > maxLength ? entry.Substring(0, maxLength) : entry, | ||
129 | ""); | ||
130 | } | ||
131 | |||
132 | /// <summary> | ||
133 | /// Generate UDP Queue data report for each client | ||
134 | /// </summary> | ||
135 | /// <param name="showParams"></param> | ||
136 | /// <returns></returns> | ||
137 | protected string GetQueuesReport(string[] showParams) | ||
138 | { | ||
139 | bool showChildren = false; | ||
140 | |||
141 | if (showParams.Length > 2 && showParams[2] == "full") | ||
142 | showChildren = true; | ||
143 | |||
144 | StringBuilder report = new StringBuilder(); | ||
145 | |||
146 | int columnPadding = 2; | ||
147 | int maxNameLength = 18; | ||
148 | int maxRegionNameLength = 14; | ||
149 | int maxTypeLength = 4; | ||
150 | int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; | ||
151 | |||
152 | report.Append(GetColumnEntry("User", maxNameLength, columnPadding)); | ||
153 | report.Append(GetColumnEntry("Region", maxRegionNameLength, columnPadding)); | ||
154 | report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); | ||
155 | |||
156 | report.AppendFormat( | ||
157 | "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", | ||
158 | "Pkts", | ||
159 | "Pkts", | ||
160 | "Bytes", | ||
161 | "Pkts", | ||
162 | "Pkts", | ||
163 | "Pkts", | ||
164 | "Pkts", | ||
165 | "Pkts", | ||
166 | "Pkts", | ||
167 | "Pkts", | ||
168 | "Pkts"); | ||
169 | |||
170 | report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); | ||
171 | report.AppendFormat( | ||
172 | "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", | ||
173 | "Out", | ||
174 | "In", | ||
175 | "Unacked", | ||
176 | "Resend", | ||
177 | "Land", | ||
178 | "Wind", | ||
179 | "Cloud", | ||
180 | "Task", | ||
181 | "Texture", | ||
182 | "Asset", | ||
183 | "State"); | ||
184 | |||
185 | lock (m_scenes) | ||
186 | { | ||
187 | foreach (Scene scene in m_scenes.Values) | ||
188 | { | ||
189 | scene.ForEachClient( | ||
190 | delegate(IClientAPI client) | ||
191 | { | ||
192 | if (client is IStatsCollector) | ||
193 | { | ||
194 | bool isChild = scene.PresenceChildStatus(client.AgentId); | ||
195 | if (isChild && !showChildren) | ||
196 | return; | ||
197 | |||
198 | string name = client.Name; | ||
199 | string regionName = scene.RegionInfo.RegionName; | ||
200 | |||
201 | report.Append(GetColumnEntry(name, maxNameLength, columnPadding)); | ||
202 | report.Append(GetColumnEntry(regionName, maxRegionNameLength, columnPadding)); | ||
203 | report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); | ||
204 | |||
205 | IStatsCollector stats = (IStatsCollector)client; | ||
206 | |||
207 | report.AppendLine(stats.Report()); | ||
208 | } | ||
209 | }); | ||
210 | } | ||
211 | } | ||
212 | |||
213 | return report.ToString(); | ||
214 | } | ||
215 | |||
216 | /// <summary> | ||
217 | /// Show throttle data | ||
218 | /// </summary> | ||
219 | /// <param name="showParams"></param> | ||
220 | /// <returns></returns> | ||
221 | protected string GetThrottlesReport(string[] showParams) | ||
222 | { | ||
223 | bool showChildren = false; | ||
224 | |||
225 | if (showParams.Length > 2 && showParams[2] == "full") | ||
226 | showChildren = true; | ||
227 | |||
228 | StringBuilder report = new StringBuilder(); | ||
229 | |||
230 | int columnPadding = 2; | ||
231 | int maxNameLength = 18; | ||
232 | int maxRegionNameLength = 14; | ||
233 | int maxTypeLength = 4; | ||
234 | int totalInfoFieldsLength = maxNameLength + columnPadding + maxRegionNameLength + columnPadding + maxTypeLength + columnPadding; | ||
235 | |||
236 | report.Append(GetColumnEntry("User", maxNameLength, columnPadding)); | ||
237 | report.Append(GetColumnEntry("Region", maxRegionNameLength, columnPadding)); | ||
238 | report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); | ||
239 | |||
240 | report.AppendFormat( | ||
241 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}\n", | ||
242 | "Total", | ||
243 | "Resend", | ||
244 | "Land", | ||
245 | "Wind", | ||
246 | "Cloud", | ||
247 | "Task", | ||
248 | "Texture", | ||
249 | "Asset"); | ||
250 | |||
251 | report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); | ||
252 | report.AppendFormat( | ||
253 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", | ||
254 | "kb/s", | ||
255 | "kb/s", | ||
256 | "kb/s", | ||
257 | "kb/s", | ||
258 | "kb/s", | ||
259 | "kb/s", | ||
260 | "kb/s", | ||
261 | "kb/s"); | ||
262 | |||
263 | report.AppendLine(); | ||
264 | |||
265 | bool firstClient = true; | ||
266 | |||
267 | lock (m_scenes) | ||
268 | { | ||
269 | foreach (Scene scene in m_scenes.Values) | ||
270 | { | ||
271 | scene.ForEachClient( | ||
272 | delegate(IClientAPI client) | ||
273 | { | ||
274 | if (client is LLClientView) | ||
275 | { | ||
276 | LLClientView llClient = client as LLClientView; | ||
277 | |||
278 | if (firstClient) | ||
279 | { | ||
280 | report.AppendLine(GetServerThrottlesReport(llClient.UDPServer)); | ||
281 | firstClient = false; | ||
282 | } | ||
283 | |||
284 | bool isChild = scene.PresenceChildStatus(client.AgentId); | ||
285 | if (isChild && !showChildren) | ||
286 | return; | ||
287 | |||
288 | string name = client.Name; | ||
289 | string regionName = scene.RegionInfo.RegionName; | ||
290 | |||
291 | LLUDPClient llUdpClient = llClient.UDPClient; | ||
292 | ClientInfo ci = llUdpClient.GetClientInfo(); | ||
293 | |||
294 | report.Append(GetColumnEntry(name, maxNameLength, columnPadding)); | ||
295 | report.Append(GetColumnEntry(regionName, maxRegionNameLength, columnPadding)); | ||
296 | report.Append(GetColumnEntry(isChild ? "Cd" : "Rt", maxTypeLength, columnPadding)); | ||
297 | |||
298 | report.AppendFormat( | ||
299 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", | ||
300 | (ci.totalThrottle * 8) / 1000, | ||
301 | (ci.resendThrottle * 8) / 1000, | ||
302 | (ci.landThrottle * 8) / 1000, | ||
303 | (ci.windThrottle * 8) / 1000, | ||
304 | (ci.cloudThrottle * 8) / 1000, | ||
305 | (ci.taskThrottle * 8) / 1000, | ||
306 | (ci.textureThrottle * 8) / 1000, | ||
307 | (ci.assetThrottle * 8) / 1000); | ||
308 | |||
309 | report.AppendLine(); | ||
310 | } | ||
311 | }); | ||
312 | } | ||
313 | } | ||
314 | |||
315 | return report.ToString(); | ||
316 | } | ||
317 | |||
318 | protected string GetServerThrottlesReport(LLUDPServer udpServer) | ||
319 | { | ||
320 | StringBuilder report = new StringBuilder(); | ||
321 | |||
322 | int columnPadding = 2; | ||
323 | int maxNameLength = 18; | ||
324 | int maxRegionNameLength = 14; | ||
325 | int maxTypeLength = 4; | ||
326 | |||
327 | string name = "SERVER AGENT LIMITS"; | ||
328 | |||
329 | report.Append(GetColumnEntry(name, maxNameLength, columnPadding)); | ||
330 | report.Append(GetColumnEntry("-", maxRegionNameLength, columnPadding)); | ||
331 | report.Append(GetColumnEntry("-", maxTypeLength, columnPadding)); | ||
332 | |||
333 | ThrottleRates throttleRates = udpServer.ThrottleRates; | ||
334 | report.AppendFormat( | ||
335 | "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", | ||
336 | "n/a", | ||
337 | (throttleRates.ResendLimit * 8) / 1000, | ||
338 | (throttleRates.LandLimit * 8) / 1000, | ||
339 | (throttleRates.WindLimit * 8) / 1000, | ||
340 | (throttleRates.CloudLimit * 8) / 1000, | ||
341 | (throttleRates.TaskLimit * 8) / 1000, | ||
342 | (throttleRates.TextureLimit * 8) / 1000, | ||
343 | (throttleRates.AssetLimit * 8) / 1000); | ||
344 | |||
345 | return report.ToString(); | ||
346 | } | ||
347 | } | ||
348 | } \ No newline at end of file | ||
diff --git a/OpenSim/Server/Handlers/Grid/GridInfoServerInConnector.cs b/OpenSim/Server/Handlers/Grid/GridInfoServerInConnector.cs index c9e80d9..8472d34 100644 --- a/OpenSim/Server/Handlers/Grid/GridInfoServerInConnector.cs +++ b/OpenSim/Server/Handlers/Grid/GridInfoServerInConnector.cs | |||
@@ -39,7 +39,7 @@ namespace OpenSim.Server.Handlers.Grid | |||
39 | { | 39 | { |
40 | public class GridInfoServerInConnector : ServiceConnector | 40 | public class GridInfoServerInConnector : ServiceConnector |
41 | { | 41 | { |
42 | private string m_ConfigName = "GridInfoService"; | 42 | // private string m_ConfigName = "GridInfoService"; |
43 | 43 | ||
44 | public GridInfoServerInConnector(IConfigSource config, IHttpServer server, string configName) : | 44 | public GridInfoServerInConnector(IConfigSource config, IHttpServer server, string configName) : |
45 | base(config, server, configName) | 45 | base(config, server, configName) |
diff --git a/OpenSim/Server/Handlers/Hypergrid/AgentHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/AgentHandlers.cs index 31eefb1..f3f81b0 100644 --- a/OpenSim/Server/Handlers/Hypergrid/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Hypergrid/AgentHandlers.cs | |||
@@ -51,7 +51,8 @@ namespace OpenSim.Server.Handlers.Hypergrid | |||
51 | { | 51 | { |
52 | public class GatekeeperAgentHandler : OpenSim.Server.Handlers.Simulation.AgentHandler | 52 | public class GatekeeperAgentHandler : OpenSim.Server.Handlers.Simulation.AgentHandler |
53 | { | 53 | { |
54 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 54 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
55 | |||
55 | private IGatekeeperService m_GatekeeperService; | 56 | private IGatekeeperService m_GatekeeperService; |
56 | 57 | ||
57 | public GatekeeperAgentHandler(IGatekeeperService gatekeeper, bool proxy) | 58 | public GatekeeperAgentHandler(IGatekeeperService gatekeeper, bool proxy) |
diff --git a/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs b/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs index 49de8b1..3d0967f 100644 --- a/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs +++ b/OpenSim/Server/Handlers/Hypergrid/GatekeeperServerConnector.cs | |||
@@ -41,9 +41,9 @@ namespace OpenSim.Server.Handlers.Hypergrid | |||
41 | { | 41 | { |
42 | public class GatekeeperServiceInConnector : ServiceConnector | 42 | public class GatekeeperServiceInConnector : ServiceConnector |
43 | { | 43 | { |
44 | private static readonly ILog m_log = | 44 | // private static readonly ILog m_log = |
45 | LogManager.GetLogger( | 45 | // LogManager.GetLogger( |
46 | MethodBase.GetCurrentMethod().DeclaringType); | 46 | // MethodBase.GetCurrentMethod().DeclaringType); |
47 | 47 | ||
48 | private IGatekeeperService m_GatekeeperService; | 48 | private IGatekeeperService m_GatekeeperService; |
49 | public IGatekeeperService GateKeeper | 49 | public IGatekeeperService GateKeeper |
diff --git a/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs b/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs index 0066bd4..968c1e6 100644 --- a/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs +++ b/OpenSim/Server/Handlers/Hypergrid/HomeAgentHandlers.cs | |||
@@ -215,15 +215,22 @@ namespace OpenSim.Server.Handlers.Hypergrid | |||
215 | 215 | ||
216 | // We're behind a proxy | 216 | // We're behind a proxy |
217 | Hashtable headers = (Hashtable)request["headers"]; | 217 | Hashtable headers = (Hashtable)request["headers"]; |
218 | if (headers.ContainsKey("X-Forwarded-For") && headers["X-Forwarded-For"] != null) | 218 | string xff = "X-Forwarded-For"; |
219 | { | 219 | if (headers.ContainsKey(xff.ToLower())) |
220 | m_log.DebugFormat("[HOME AGENT HANDLER]: XFF is {0}", headers["X-Forwarded-For"]); | 220 | xff = xff.ToLower(); |
221 | 221 | ||
222 | IPEndPoint ep = Util.GetClientIPFromXFF((string)headers["X-Forwarded-For"]); | 222 | if (!headers.ContainsKey(xff) || headers[xff] == null) |
223 | if (ep != null) | 223 | { |
224 | return ep.Address.ToString(); | 224 | m_log.WarnFormat("[AGENT HANDLER]: No XFF header"); |
225 | return Util.GetCallerIP(request); | ||
225 | } | 226 | } |
226 | 227 | ||
228 | m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers[xff]); | ||
229 | |||
230 | IPEndPoint ep = Util.GetClientIPFromXFF((string)headers[xff]); | ||
231 | if (ep != null) | ||
232 | return ep.Address.ToString(); | ||
233 | |||
227 | // Oops | 234 | // Oops |
228 | return Util.GetCallerIP(request); | 235 | return Util.GetCallerIP(request); |
229 | } | 236 | } |
diff --git a/OpenSim/Server/Handlers/Hypergrid/UserAgentServerConnector.cs b/OpenSim/Server/Handlers/Hypergrid/UserAgentServerConnector.cs index e5f6a5d..0e8ce80 100644 --- a/OpenSim/Server/Handlers/Hypergrid/UserAgentServerConnector.cs +++ b/OpenSim/Server/Handlers/Hypergrid/UserAgentServerConnector.cs | |||
@@ -47,9 +47,9 @@ namespace OpenSim.Server.Handlers.Hypergrid | |||
47 | { | 47 | { |
48 | public class UserAgentServerConnector : ServiceConnector | 48 | public class UserAgentServerConnector : ServiceConnector |
49 | { | 49 | { |
50 | private static readonly ILog m_log = | 50 | // private static readonly ILog m_log = |
51 | LogManager.GetLogger( | 51 | // LogManager.GetLogger( |
52 | MethodBase.GetCurrentMethod().DeclaringType); | 52 | // MethodBase.GetCurrentMethod().DeclaringType); |
53 | 53 | ||
54 | private IUserAgentService m_HomeUsersService; | 54 | private IUserAgentService m_HomeUsersService; |
55 | 55 | ||
diff --git a/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs b/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs index 00f035c..899f9c0 100644 --- a/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs +++ b/OpenSim/Server/Handlers/Inventory/XInventoryInConnector.cs | |||
@@ -347,7 +347,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
347 | 347 | ||
348 | byte[] HandleAddFolder(Dictionary<string,object> request) | 348 | byte[] HandleAddFolder(Dictionary<string,object> request) |
349 | { | 349 | { |
350 | Dictionary<string,object> result = new Dictionary<string,object>(); | ||
351 | InventoryFolderBase folder = BuildFolder(request); | 350 | InventoryFolderBase folder = BuildFolder(request); |
352 | 351 | ||
353 | if (m_InventoryService.AddFolder(folder)) | 352 | if (m_InventoryService.AddFolder(folder)) |
@@ -358,7 +357,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
358 | 357 | ||
359 | byte[] HandleUpdateFolder(Dictionary<string,object> request) | 358 | byte[] HandleUpdateFolder(Dictionary<string,object> request) |
360 | { | 359 | { |
361 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
362 | InventoryFolderBase folder = BuildFolder(request); | 360 | InventoryFolderBase folder = BuildFolder(request); |
363 | 361 | ||
364 | if (m_InventoryService.UpdateFolder(folder)) | 362 | if (m_InventoryService.UpdateFolder(folder)) |
@@ -369,7 +367,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
369 | 367 | ||
370 | byte[] HandleMoveFolder(Dictionary<string,object> request) | 368 | byte[] HandleMoveFolder(Dictionary<string,object> request) |
371 | { | 369 | { |
372 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
373 | UUID parentID = UUID.Zero; | 370 | UUID parentID = UUID.Zero; |
374 | UUID.TryParse(request["ParentID"].ToString(), out parentID); | 371 | UUID.TryParse(request["ParentID"].ToString(), out parentID); |
375 | UUID folderID = UUID.Zero; | 372 | UUID folderID = UUID.Zero; |
@@ -387,7 +384,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
387 | 384 | ||
388 | byte[] HandleDeleteFolders(Dictionary<string,object> request) | 385 | byte[] HandleDeleteFolders(Dictionary<string,object> request) |
389 | { | 386 | { |
390 | Dictionary<string,object> result = new Dictionary<string,object>(); | ||
391 | UUID principal = UUID.Zero; | 387 | UUID principal = UUID.Zero; |
392 | UUID.TryParse(request["PRINCIPAL"].ToString(), out principal); | 388 | UUID.TryParse(request["PRINCIPAL"].ToString(), out principal); |
393 | List<string> slist = (List<string>)request["FOLDERS"]; | 389 | List<string> slist = (List<string>)request["FOLDERS"]; |
@@ -408,7 +404,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
408 | 404 | ||
409 | byte[] HandlePurgeFolder(Dictionary<string,object> request) | 405 | byte[] HandlePurgeFolder(Dictionary<string,object> request) |
410 | { | 406 | { |
411 | Dictionary<string,object> result = new Dictionary<string,object>(); | ||
412 | UUID folderID = UUID.Zero; | 407 | UUID folderID = UUID.Zero; |
413 | UUID.TryParse(request["ID"].ToString(), out folderID); | 408 | UUID.TryParse(request["ID"].ToString(), out folderID); |
414 | 409 | ||
@@ -421,7 +416,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
421 | 416 | ||
422 | byte[] HandleAddItem(Dictionary<string,object> request) | 417 | byte[] HandleAddItem(Dictionary<string,object> request) |
423 | { | 418 | { |
424 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
425 | InventoryItemBase item = BuildItem(request); | 419 | InventoryItemBase item = BuildItem(request); |
426 | 420 | ||
427 | if (m_InventoryService.AddItem(item)) | 421 | if (m_InventoryService.AddItem(item)) |
@@ -432,7 +426,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
432 | 426 | ||
433 | byte[] HandleUpdateItem(Dictionary<string,object> request) | 427 | byte[] HandleUpdateItem(Dictionary<string,object> request) |
434 | { | 428 | { |
435 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
436 | InventoryItemBase item = BuildItem(request); | 429 | InventoryItemBase item = BuildItem(request); |
437 | 430 | ||
438 | if (m_InventoryService.UpdateItem(item)) | 431 | if (m_InventoryService.UpdateItem(item)) |
@@ -443,7 +436,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
443 | 436 | ||
444 | byte[] HandleMoveItems(Dictionary<string,object> request) | 437 | byte[] HandleMoveItems(Dictionary<string,object> request) |
445 | { | 438 | { |
446 | Dictionary<string,object> result = new Dictionary<string,object>(); | ||
447 | List<string> idlist = (List<string>)request["IDLIST"]; | 439 | List<string> idlist = (List<string>)request["IDLIST"]; |
448 | List<string> destlist = (List<string>)request["DESTLIST"]; | 440 | List<string> destlist = (List<string>)request["DESTLIST"]; |
449 | UUID principal = UUID.Zero; | 441 | UUID principal = UUID.Zero; |
@@ -482,7 +474,6 @@ namespace OpenSim.Server.Handlers.Asset | |||
482 | 474 | ||
483 | byte[] HandleDeleteItems(Dictionary<string,object> request) | 475 | byte[] HandleDeleteItems(Dictionary<string,object> request) |
484 | { | 476 | { |
485 | Dictionary<string, object> result = new Dictionary<string, object>(); | ||
486 | UUID principal = UUID.Zero; | 477 | UUID principal = UUID.Zero; |
487 | UUID.TryParse(request["PRINCIPAL"].ToString(), out principal); | 478 | UUID.TryParse(request["PRINCIPAL"].ToString(), out principal); |
488 | List<string> slist = (List<string>)request["ITEMS"]; | 479 | List<string> slist = (List<string>)request["ITEMS"]; |
diff --git a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs index 3104917..85bf96e 100644 --- a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs | |||
@@ -129,8 +129,6 @@ namespace OpenSim.Server.Handlers.Presence | |||
129 | byte[] LogoutAgent(Dictionary<string, object> request) | 129 | byte[] LogoutAgent(Dictionary<string, object> request) |
130 | { | 130 | { |
131 | UUID session = UUID.Zero; | 131 | UUID session = UUID.Zero; |
132 | Vector3 position = Vector3.Zero; | ||
133 | Vector3 lookat = Vector3.Zero; | ||
134 | 132 | ||
135 | if (!request.ContainsKey("SessionID")) | 133 | if (!request.ContainsKey("SessionID")) |
136 | return FailureResult(); | 134 | return FailureResult(); |
diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 9c41bcb..57672a8 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | |||
@@ -200,15 +200,22 @@ namespace OpenSim.Server.Handlers.Simulation | |||
200 | 200 | ||
201 | // We're behind a proxy | 201 | // We're behind a proxy |
202 | Hashtable headers = (Hashtable)request["headers"]; | 202 | Hashtable headers = (Hashtable)request["headers"]; |
203 | if (headers.ContainsKey("X-Forwarded-For") && headers["X-Forwarded-For"] != null) | 203 | string xff = "X-Forwarded-For"; |
204 | { | 204 | if (headers.ContainsKey(xff.ToLower())) |
205 | m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers["X-Forwarded-For"]); | 205 | xff = xff.ToLower(); |
206 | 206 | ||
207 | IPEndPoint ep = Util.GetClientIPFromXFF((string)headers["X-Forwarded-For"]); | 207 | if (!headers.ContainsKey(xff) || headers[xff] == null) |
208 | if (ep != null) | 208 | { |
209 | return ep.Address.ToString(); | 209 | m_log.WarnFormat("[AGENT HANDLER]: No XFF header"); |
210 | return Util.GetCallerIP(request); | ||
210 | } | 211 | } |
211 | 212 | ||
213 | m_log.DebugFormat("[AGENT HANDLER]: XFF is {0}", headers[xff]); | ||
214 | |||
215 | IPEndPoint ep = Util.GetClientIPFromXFF((string)headers[xff]); | ||
216 | if (ep != null) | ||
217 | return ep.Address.ToString(); | ||
218 | |||
212 | // Oops | 219 | // Oops |
213 | return Util.GetCallerIP(request); | 220 | return Util.GetCallerIP(request); |
214 | } | 221 | } |
diff --git a/OpenSim/Server/Handlers/Simulation/SimulationServiceInConnector.cs b/OpenSim/Server/Handlers/Simulation/SimulationServiceInConnector.cs index 50d6fb2..f33eda7 100644 --- a/OpenSim/Server/Handlers/Simulation/SimulationServiceInConnector.cs +++ b/OpenSim/Server/Handlers/Simulation/SimulationServiceInConnector.cs | |||
@@ -38,7 +38,7 @@ namespace OpenSim.Server.Handlers.Simulation | |||
38 | public class SimulationServiceInConnector : ServiceConnector | 38 | public class SimulationServiceInConnector : ServiceConnector |
39 | { | 39 | { |
40 | private ISimulationService m_LocalSimulationService; | 40 | private ISimulationService m_LocalSimulationService; |
41 | private IAuthenticationService m_AuthenticationService; | 41 | // private IAuthenticationService m_AuthenticationService; |
42 | 42 | ||
43 | public SimulationServiceInConnector(IConfigSource config, IHttpServer server, IScene scene) : | 43 | public SimulationServiceInConnector(IConfigSource config, IHttpServer server, IScene scene) : |
44 | base(config, server, String.Empty) | 44 | base(config, server, String.Empty) |
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs index 18a31670..918544f 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianGridServiceConnector.cs | |||
@@ -56,7 +56,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
56 | MethodBase.GetCurrentMethod().DeclaringType); | 56 | MethodBase.GetCurrentMethod().DeclaringType); |
57 | 57 | ||
58 | private string m_ServerURI = String.Empty; | 58 | private string m_ServerURI = String.Empty; |
59 | private bool m_Enabled = false; | 59 | // private bool m_Enabled = false; |
60 | 60 | ||
61 | public SimianGridServiceConnector() { } | 61 | public SimianGridServiceConnector() { } |
62 | public SimianGridServiceConnector(string serverURI) | 62 | public SimianGridServiceConnector(string serverURI) |
@@ -93,7 +93,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
93 | if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("=")) | 93 | if (!serviceUrl.EndsWith("/") && !serviceUrl.EndsWith("=")) |
94 | serviceUrl = serviceUrl + '/'; | 94 | serviceUrl = serviceUrl + '/'; |
95 | m_ServerURI = serviceUrl; | 95 | m_ServerURI = serviceUrl; |
96 | m_Enabled = true; | 96 | // m_Enabled = true; |
97 | } | 97 | } |
98 | 98 | ||
99 | #region IGridService | 99 | #region IGridService |
@@ -175,7 +175,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
175 | } | 175 | } |
176 | } | 176 | } |
177 | 177 | ||
178 | m_log.Debug("[SIMIAN GRID CONNECTOR]: Found " + regions.Count + " neighbors for region " + regionID); | 178 | // m_log.Debug("[SIMIAN GRID CONNECTOR]: Found " + regions.Count + " neighbors for region " + regionID); |
179 | return regions; | 179 | return regions; |
180 | } | 180 | } |
181 | 181 | ||
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs index 61f3fbe..39df1f5 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianInventoryServiceConnector.cs | |||
@@ -757,7 +757,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
757 | } | 757 | } |
758 | } | 758 | } |
759 | 759 | ||
760 | m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invFolders.Count + " folders from SimianGrid response"); | 760 | // m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invFolders.Count + " folders from SimianGrid response"); |
761 | return invFolders; | 761 | return invFolders; |
762 | } | 762 | } |
763 | 763 | ||
@@ -824,7 +824,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
824 | } | 824 | } |
825 | } | 825 | } |
826 | 826 | ||
827 | m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invItems.Count + " items from SimianGrid response"); | 827 | // m_log.Debug("[SIMIAN INVENTORY CONNECTOR]: Parsed " + invItems.Count + " items from SimianGrid response"); |
828 | return invItems; | 828 | return invItems; |
829 | } | 829 | } |
830 | 830 | ||
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs index 8141420..678f738 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianPresenceServiceConnector.cs | |||
@@ -158,7 +158,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
158 | 158 | ||
159 | public bool LogoutAgent(UUID sessionID) | 159 | public bool LogoutAgent(UUID sessionID) |
160 | { | 160 | { |
161 | m_log.InfoFormat("[SIMIAN PRESENCE CONNECTOR]: Logout requested for agent with sessionID " + sessionID); | 161 | // m_log.InfoFormat("[SIMIAN PRESENCE CONNECTOR]: Logout requested for agent with sessionID " + sessionID); |
162 | 162 | ||
163 | NameValueCollection requestArgs = new NameValueCollection | 163 | NameValueCollection requestArgs = new NameValueCollection |
164 | { | 164 | { |
@@ -177,7 +177,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
177 | 177 | ||
178 | public bool LogoutRegionAgents(UUID regionID) | 178 | public bool LogoutRegionAgents(UUID regionID) |
179 | { | 179 | { |
180 | m_log.InfoFormat("[SIMIAN PRESENCE CONNECTOR]: Logout requested for all agents in region " + regionID); | 180 | // m_log.InfoFormat("[SIMIAN PRESENCE CONNECTOR]: Logout requested for all agents in region " + regionID); |
181 | 181 | ||
182 | NameValueCollection requestArgs = new NameValueCollection | 182 | NameValueCollection requestArgs = new NameValueCollection |
183 | { | 183 | { |
@@ -202,7 +202,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
202 | 202 | ||
203 | public PresenceInfo GetAgent(UUID sessionID) | 203 | public PresenceInfo GetAgent(UUID sessionID) |
204 | { | 204 | { |
205 | m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting session data for agent with sessionID " + sessionID); | 205 | // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting session data for agent with sessionID " + sessionID); |
206 | 206 | ||
207 | NameValueCollection requestArgs = new NameValueCollection | 207 | NameValueCollection requestArgs = new NameValueCollection |
208 | { | 208 | { |
@@ -262,7 +262,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
262 | 262 | ||
263 | public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt) | 263 | public bool LoggedOut(string userID, UUID sessionID, UUID regionID, Vector3 lastPosition, Vector3 lastLookAt) |
264 | { | 264 | { |
265 | m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Logging out user " + userID); | 265 | // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Logging out user " + userID); |
266 | 266 | ||
267 | // Remove the session to mark this user offline | 267 | // Remove the session to mark this user offline |
268 | if (!LogoutAgent(sessionID)) | 268 | if (!LogoutAgent(sessionID)) |
@@ -287,7 +287,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
287 | 287 | ||
288 | public bool SetHome(string userID, UUID regionID, Vector3 position, Vector3 lookAt) | 288 | public bool SetHome(string userID, UUID regionID, Vector3 position, Vector3 lookAt) |
289 | { | 289 | { |
290 | m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Setting home location for user " + userID); | 290 | // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Setting home location for user " + userID); |
291 | 291 | ||
292 | NameValueCollection requestArgs = new NameValueCollection | 292 | NameValueCollection requestArgs = new NameValueCollection |
293 | { | 293 | { |
@@ -312,10 +312,10 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
312 | 312 | ||
313 | public GridUserInfo GetGridUserInfo(string user) | 313 | public GridUserInfo GetGridUserInfo(string user) |
314 | { | 314 | { |
315 | m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting session data for agent " + user); | 315 | // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting session data for agent " + user); |
316 | 316 | ||
317 | UUID userID = new UUID(user); | 317 | UUID userID = new UUID(user); |
318 | m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting user data for " + userID); | 318 | // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting user data for " + userID); |
319 | 319 | ||
320 | NameValueCollection requestArgs = new NameValueCollection | 320 | NameValueCollection requestArgs = new NameValueCollection |
321 | { | 321 | { |
@@ -338,7 +338,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
338 | 338 | ||
339 | private OSDMap GetUserData(UUID userID) | 339 | private OSDMap GetUserData(UUID userID) |
340 | { | 340 | { |
341 | m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting user data for " + userID); | 341 | // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting user data for " + userID); |
342 | 342 | ||
343 | NameValueCollection requestArgs = new NameValueCollection | 343 | NameValueCollection requestArgs = new NameValueCollection |
344 | { | 344 | { |
@@ -362,7 +362,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
362 | OSDMap userResponse = GetUserData(userID); | 362 | OSDMap userResponse = GetUserData(userID); |
363 | if (userResponse != null) | 363 | if (userResponse != null) |
364 | { | 364 | { |
365 | m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting sessions for " + userID); | 365 | // m_log.DebugFormat("[SIMIAN PRESENCE CONNECTOR]: Requesting sessions for " + userID); |
366 | 366 | ||
367 | NameValueCollection requestArgs = new NameValueCollection | 367 | NameValueCollection requestArgs = new NameValueCollection |
368 | { | 368 | { |
@@ -377,10 +377,10 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
377 | if (presence != null) | 377 | if (presence != null) |
378 | presences.Add(presence); | 378 | presences.Add(presence); |
379 | } | 379 | } |
380 | else | 380 | // else |
381 | { | 381 | // { |
382 | m_log.Debug("[SIMIAN PRESENCE CONNECTOR]: No session returned for " + userID + ": " + response["Message"].AsString()); | 382 | // m_log.Debug("[SIMIAN PRESENCE CONNECTOR]: No session returned for " + userID + ": " + response["Message"].AsString()); |
383 | } | 383 | // } |
384 | } | 384 | } |
385 | 385 | ||
386 | return presences; | 386 | return presences; |
@@ -424,7 +424,6 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
424 | { | 424 | { |
425 | if (userResponse != null && userResponse["User"] is OSDMap) | 425 | if (userResponse != null && userResponse["User"] is OSDMap) |
426 | { | 426 | { |
427 | |||
428 | GridUserInfo info = new GridUserInfo(); | 427 | GridUserInfo info = new GridUserInfo(); |
429 | 428 | ||
430 | info.Online = true; | 429 | info.Online = true; |
diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs index 9c150ee..91e2976 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianUserAccountServiceConnector.cs | |||
@@ -157,7 +157,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
157 | { | 157 | { |
158 | List<UserAccount> accounts = new List<UserAccount>(); | 158 | List<UserAccount> accounts = new List<UserAccount>(); |
159 | 159 | ||
160 | m_log.DebugFormat("[SIMIAN ACCOUNT CONNECTOR]: Searching for user accounts with name query " + query); | 160 | // m_log.DebugFormat("[SIMIAN ACCOUNT CONNECTOR]: Searching for user accounts with name query " + query); |
161 | 161 | ||
162 | NameValueCollection requestArgs = new NameValueCollection | 162 | NameValueCollection requestArgs = new NameValueCollection |
163 | { | 163 | { |
@@ -193,7 +193,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
193 | 193 | ||
194 | public bool StoreUserAccount(UserAccount data) | 194 | public bool StoreUserAccount(UserAccount data) |
195 | { | 195 | { |
196 | m_log.InfoFormat("[SIMIAN ACCOUNT CONNECTOR]: Storing user account for " + data.Name); | 196 | // m_log.InfoFormat("[SIMIAN ACCOUNT CONNECTOR]: Storing user account for " + data.Name); |
197 | 197 | ||
198 | NameValueCollection requestArgs = new NameValueCollection | 198 | NameValueCollection requestArgs = new NameValueCollection |
199 | { | 199 | { |
@@ -250,7 +250,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
250 | private UserAccount GetUser(NameValueCollection requestArgs) | 250 | private UserAccount GetUser(NameValueCollection requestArgs) |
251 | { | 251 | { |
252 | string lookupValue = (requestArgs.Count > 1) ? requestArgs[1] : "(Unknown)"; | 252 | string lookupValue = (requestArgs.Count > 1) ? requestArgs[1] : "(Unknown)"; |
253 | m_log.DebugFormat("[SIMIAN ACCOUNT CONNECTOR]: Looking up user account with query: " + lookupValue); | 253 | // m_log.DebugFormat("[SIMIAN ACCOUNT CONNECTOR]: Looking up user account with query: " + lookupValue); |
254 | 254 | ||
255 | OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs); | 255 | OSDMap response = WebUtil.PostToService(m_serverUrl, requestArgs); |
256 | if (response["Success"].AsBoolean()) | 256 | if (response["Success"].AsBoolean()) |
@@ -325,4 +325,4 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
325 | } | 325 | } |
326 | } | 326 | } |
327 | } | 327 | } |
328 | } | 328 | } \ No newline at end of file |
diff --git a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs index 8a8b46d..b6df5a2 100644 --- a/OpenSim/Services/Connectors/Simulation/EstateDataService.cs +++ b/OpenSim/Services/Connectors/Simulation/EstateDataService.cs | |||
@@ -43,9 +43,9 @@ namespace OpenSim.Services.Connectors | |||
43 | { | 43 | { |
44 | public class EstateDataService : ServiceBase, IEstateDataService | 44 | public class EstateDataService : ServiceBase, IEstateDataService |
45 | { | 45 | { |
46 | private static readonly ILog m_log = | 46 | // private static readonly ILog m_log = |
47 | LogManager.GetLogger( | 47 | // LogManager.GetLogger( |
48 | MethodBase.GetCurrentMethod().DeclaringType); | 48 | // MethodBase.GetCurrentMethod().DeclaringType); |
49 | 49 | ||
50 | protected IEstateDataStore m_database; | 50 | protected IEstateDataStore m_database; |
51 | 51 | ||
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs b/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs index 0df9380..ccef50b 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationDataService.cs | |||
@@ -43,9 +43,9 @@ namespace OpenSim.Services.Connectors | |||
43 | { | 43 | { |
44 | public class SimulationDataService : ServiceBase, ISimulationDataService | 44 | public class SimulationDataService : ServiceBase, ISimulationDataService |
45 | { | 45 | { |
46 | private static readonly ILog m_log = | 46 | // private static readonly ILog m_log = |
47 | LogManager.GetLogger( | 47 | // LogManager.GetLogger( |
48 | MethodBase.GetCurrentMethod().DeclaringType); | 48 | // MethodBase.GetCurrentMethod().DeclaringType); |
49 | 49 | ||
50 | protected ISimulationDataStore m_database; | 50 | protected ISimulationDataStore m_database; |
51 | 51 | ||
diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index f34c2bd..143c296 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs | |||
@@ -237,7 +237,7 @@ namespace OpenSim.Services.Connectors.Simulation | |||
237 | 237 | ||
238 | try | 238 | try |
239 | { | 239 | { |
240 | OSDMap result = WebUtil.ServiceOSDRequest(uri,null,"DELETE",10000); | 240 | WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000); |
241 | } | 241 | } |
242 | catch (Exception e) | 242 | catch (Exception e) |
243 | { | 243 | { |
@@ -257,7 +257,7 @@ namespace OpenSim.Services.Connectors.Simulation | |||
257 | 257 | ||
258 | try | 258 | try |
259 | { | 259 | { |
260 | OSDMap result = WebUtil.ServiceOSDRequest(uri,null,"DELETE",10000); | 260 | WebUtil.ServiceOSDRequest(uri, null, "DELETE", 10000); |
261 | } | 261 | } |
262 | catch (Exception e) | 262 | catch (Exception e) |
263 | { | 263 | { |
@@ -303,7 +303,7 @@ namespace OpenSim.Services.Connectors.Simulation | |||
303 | args["destination_name"] = OSD.FromString(destination.RegionName); | 303 | args["destination_name"] = OSD.FromString(destination.RegionName); |
304 | args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); | 304 | args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString()); |
305 | 305 | ||
306 | OSDMap result = WebUtil.PostToService(uri,args); | 306 | WebUtil.PostToService(uri, args); |
307 | } | 307 | } |
308 | catch (Exception e) | 308 | catch (Exception e) |
309 | { | 309 | { |
diff --git a/OpenSim/Services/HypergridService/GatekeeperService.cs b/OpenSim/Services/HypergridService/GatekeeperService.cs index bbddd87..b66bfed 100644 --- a/OpenSim/Services/HypergridService/GatekeeperService.cs +++ b/OpenSim/Services/HypergridService/GatekeeperService.cs | |||
@@ -303,7 +303,7 @@ namespace OpenSim.Services.HypergridService | |||
303 | return m_UserAgentService.VerifyAgent(aCircuit.SessionID, aCircuit.ServiceSessionID); | 303 | return m_UserAgentService.VerifyAgent(aCircuit.SessionID, aCircuit.ServiceSessionID); |
304 | else | 304 | else |
305 | { | 305 | { |
306 | Object[] args = new Object[] { userURL }; | 306 | // Object[] args = new Object[] { userURL }; |
307 | IUserAgentService userAgentService = new UserAgentServiceConnector(userURL); | 307 | IUserAgentService userAgentService = new UserAgentServiceConnector(userURL); |
308 | if (userAgentService != null) | 308 | if (userAgentService != null) |
309 | { | 309 | { |
diff --git a/OpenSim/Services/HypergridService/UserAccountCache.cs b/OpenSim/Services/HypergridService/UserAccountCache.cs index 3e9aea1..65f9dd5 100644 --- a/OpenSim/Services/HypergridService/UserAccountCache.cs +++ b/OpenSim/Services/HypergridService/UserAccountCache.cs | |||
@@ -13,9 +13,10 @@ namespace OpenSim.Services.HypergridService | |||
13 | { | 13 | { |
14 | private const double CACHE_EXPIRATION_SECONDS = 120000.0; // 33 hours! | 14 | private const double CACHE_EXPIRATION_SECONDS = 120000.0; // 33 hours! |
15 | 15 | ||
16 | private static readonly ILog m_log = | 16 | // private static readonly ILog m_log = |
17 | LogManager.GetLogger( | 17 | // LogManager.GetLogger( |
18 | MethodBase.GetCurrentMethod().DeclaringType); | 18 | // MethodBase.GetCurrentMethod().DeclaringType); |
19 | |||
19 | private ExpiringCache<UUID, UserAccount> m_UUIDCache; | 20 | private ExpiringCache<UUID, UserAccount> m_UUIDCache; |
20 | 21 | ||
21 | private IUserAccountService m_UserAccountService; | 22 | private IUserAccountService m_UserAccountService; |
diff --git a/OpenSim/Services/LLLoginService/LLLoginResponse.cs b/OpenSim/Services/LLLoginService/LLLoginResponse.cs index f985ab2..ebd6f7c 100644 --- a/OpenSim/Services/LLLoginService/LLLoginResponse.cs +++ b/OpenSim/Services/LLLoginService/LLLoginResponse.cs | |||
@@ -661,7 +661,7 @@ namespace OpenSim.Services.LLLoginService | |||
661 | protected virtual ArrayList GetInventoryLibrary(ILibraryService library) | 661 | protected virtual ArrayList GetInventoryLibrary(ILibraryService library) |
662 | { | 662 | { |
663 | Dictionary<UUID, InventoryFolderImpl> rootFolders = library.GetAllFolders(); | 663 | Dictionary<UUID, InventoryFolderImpl> rootFolders = library.GetAllFolders(); |
664 | m_log.DebugFormat("[LLOGIN]: Library has {0} folders", rootFolders.Count); | 664 | // m_log.DebugFormat("[LLOGIN]: Library has {0} folders", rootFolders.Count); |
665 | //Dictionary<UUID, InventoryFolderImpl> rootFolders = new Dictionary<UUID,InventoryFolderImpl>(); | 665 | //Dictionary<UUID, InventoryFolderImpl> rootFolders = new Dictionary<UUID,InventoryFolderImpl>(); |
666 | ArrayList folderHashes = new ArrayList(); | 666 | ArrayList folderHashes = new ArrayList(); |
667 | 667 | ||
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs index 281b6e3..d364aa4 100644 --- a/OpenSim/Services/LLLoginService/LLLoginService.cs +++ b/OpenSim/Services/LLLoginService/LLLoginService.cs | |||
@@ -282,7 +282,7 @@ namespace OpenSim.Services.LLLoginService | |||
282 | 282 | ||
283 | // Get active gestures | 283 | // Get active gestures |
284 | List<InventoryItemBase> gestures = m_InventoryService.GetActiveGestures(account.PrincipalID); | 284 | List<InventoryItemBase> gestures = m_InventoryService.GetActiveGestures(account.PrincipalID); |
285 | m_log.DebugFormat("[LLOGIN SERVICE]: {0} active gestures", gestures.Count); | 285 | // m_log.DebugFormat("[LLOGIN SERVICE]: {0} active gestures", gestures.Count); |
286 | 286 | ||
287 | // | 287 | // |
288 | // Login the presence | 288 | // Login the presence |
@@ -320,7 +320,8 @@ namespace OpenSim.Services.LLLoginService | |||
320 | Vector3 position = Vector3.Zero; | 320 | Vector3 position = Vector3.Zero; |
321 | Vector3 lookAt = Vector3.Zero; | 321 | Vector3 lookAt = Vector3.Zero; |
322 | GridRegion gatekeeper = null; | 322 | GridRegion gatekeeper = null; |
323 | GridRegion destination = FindDestination(account, scopeID, guinfo, session, startLocation, home, out gatekeeper, out where, out position, out lookAt); | 323 | TeleportFlags flags; |
324 | GridRegion destination = FindDestination(account, scopeID, guinfo, session, startLocation, home, out gatekeeper, out where, out position, out lookAt, out flags); | ||
324 | if (destination == null) | 325 | if (destination == null) |
325 | { | 326 | { |
326 | m_PresenceService.LogoutAgent(session); | 327 | m_PresenceService.LogoutAgent(session); |
@@ -328,6 +329,8 @@ namespace OpenSim.Services.LLLoginService | |||
328 | return LLFailedLoginResponse.GridProblem; | 329 | return LLFailedLoginResponse.GridProblem; |
329 | } | 330 | } |
330 | 331 | ||
332 | if (account.UserLevel >= 200) | ||
333 | flags |= TeleportFlags.Godlike; | ||
331 | // | 334 | // |
332 | // Get the avatar | 335 | // Get the avatar |
333 | // | 336 | // |
@@ -343,7 +346,7 @@ namespace OpenSim.Services.LLLoginService | |||
343 | string reason = string.Empty; | 346 | string reason = string.Empty; |
344 | GridRegion dest; | 347 | GridRegion dest; |
345 | AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, | 348 | AgentCircuitData aCircuit = LaunchAgentAtGrid(gatekeeper, destination, account, avatar, session, secureSession, position, where, |
346 | clientVersion, channel, mac, id0, clientIP, out where, out reason, out dest); | 349 | clientVersion, channel, mac, id0, clientIP, flags, out where, out reason, out dest); |
347 | destination = dest; | 350 | destination = dest; |
348 | if (aCircuit == null) | 351 | if (aCircuit == null) |
349 | { | 352 | { |
@@ -378,8 +381,10 @@ namespace OpenSim.Services.LLLoginService | |||
378 | } | 381 | } |
379 | } | 382 | } |
380 | 383 | ||
381 | protected GridRegion FindDestination(UserAccount account, UUID scopeID, GridUserInfo pinfo, UUID sessionID, string startLocation, GridRegion home, out GridRegion gatekeeper, out string where, out Vector3 position, out Vector3 lookAt) | 384 | protected GridRegion FindDestination(UserAccount account, UUID scopeID, GridUserInfo pinfo, UUID sessionID, string startLocation, GridRegion home, out GridRegion gatekeeper, out string where, out Vector3 position, out Vector3 lookAt, out TeleportFlags flags) |
382 | { | 385 | { |
386 | flags = TeleportFlags.ViaLogin; | ||
387 | |||
383 | m_log.DebugFormat("[LLOGIN SERVICE]: FindDestination for start location {0}", startLocation); | 388 | m_log.DebugFormat("[LLOGIN SERVICE]: FindDestination for start location {0}", startLocation); |
384 | 389 | ||
385 | gatekeeper = null; | 390 | gatekeeper = null; |
@@ -473,6 +478,8 @@ namespace OpenSim.Services.LLLoginService | |||
473 | } | 478 | } |
474 | else | 479 | else |
475 | { | 480 | { |
481 | flags |= TeleportFlags.ViaRegionID; | ||
482 | |||
476 | // free uri form | 483 | // free uri form |
477 | // e.g. New Moon&135&46 New Moon@osgrid.org:8002&153&34 | 484 | // e.g. New Moon&135&46 New Moon@osgrid.org:8002&153&34 |
478 | where = "url"; | 485 | where = "url"; |
@@ -624,7 +631,7 @@ namespace OpenSim.Services.LLLoginService | |||
624 | 631 | ||
625 | protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarAppearance avatar, | 632 | protected AgentCircuitData LaunchAgentAtGrid(GridRegion gatekeeper, GridRegion destination, UserAccount account, AvatarAppearance avatar, |
626 | UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, string channel, string mac, string id0, | 633 | UUID session, UUID secureSession, Vector3 position, string currentWhere, string viewer, string channel, string mac, string id0, |
627 | IPEndPoint clientIP, out string where, out string reason, out GridRegion dest) | 634 | IPEndPoint clientIP, TeleportFlags flags, out string where, out string reason, out GridRegion dest) |
628 | { | 635 | { |
629 | where = currentWhere; | 636 | where = currentWhere; |
630 | ISimulationService simConnector = null; | 637 | ISimulationService simConnector = null; |
@@ -663,7 +670,7 @@ namespace OpenSim.Services.LLLoginService | |||
663 | { | 670 | { |
664 | circuitCode = (uint)Util.RandomClass.Next(); ; | 671 | circuitCode = (uint)Util.RandomClass.Next(); ; |
665 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, clientIP.Address.ToString(), viewer, channel, mac, id0); | 672 | aCircuit = MakeAgent(destination, account, avatar, session, secureSession, circuitCode, position, clientIP.Address.ToString(), viewer, channel, mac, id0); |
666 | success = LaunchAgentDirectly(simConnector, destination, aCircuit, out reason); | 673 | success = LaunchAgentDirectly(simConnector, destination, aCircuit, flags, out reason); |
667 | if (!success && m_GridService != null) | 674 | if (!success && m_GridService != null) |
668 | { | 675 | { |
669 | // Try the fallback regions | 676 | // Try the fallback regions |
@@ -672,7 +679,7 @@ namespace OpenSim.Services.LLLoginService | |||
672 | { | 679 | { |
673 | foreach (GridRegion r in fallbacks) | 680 | foreach (GridRegion r in fallbacks) |
674 | { | 681 | { |
675 | success = LaunchAgentDirectly(simConnector, r, aCircuit, out reason); | 682 | success = LaunchAgentDirectly(simConnector, r, aCircuit, flags | TeleportFlags.ViaRegionID, out reason); |
676 | if (success) | 683 | if (success) |
677 | { | 684 | { |
678 | where = "safe"; | 685 | where = "safe"; |
@@ -795,9 +802,9 @@ namespace OpenSim.Services.LLLoginService | |||
795 | 802 | ||
796 | } | 803 | } |
797 | 804 | ||
798 | private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, out string reason) | 805 | private bool LaunchAgentDirectly(ISimulationService simConnector, GridRegion region, AgentCircuitData aCircuit, TeleportFlags flags, out string reason) |
799 | { | 806 | { |
800 | return simConnector.CreateAgent(region, aCircuit, (int)Constants.TeleportFlags.ViaLogin, out reason); | 807 | return simConnector.CreateAgent(region, aCircuit, (uint)flags, out reason); |
801 | } | 808 | } |
802 | 809 | ||
803 | private bool LaunchAgentIndirectly(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, IPEndPoint clientIP, out string reason) | 810 | private bool LaunchAgentIndirectly(GridRegion gatekeeper, GridRegion destination, AgentCircuitData aCircuit, IPEndPoint clientIP, out string reason) |