diff options
author | Diva Canto | 2012-09-20 15:51:27 -0700 |
---|---|---|
committer | Diva Canto | 2012-09-20 15:51:27 -0700 |
commit | 33aa6d172f29a8d34ae1d1f75e506b2e5eb681d7 (patch) | |
tree | 55a191ba66b585e7cb1531257e4326529779702f /OpenSim | |
parent | More HG2.0: Added permission policies in HGAsset Service based on asset types... (diff) | |
parent | Insert a new log level 4 for HTTP IN and HTTP OUT that will log how long the ... (diff) | |
download | opensim-SC-33aa6d172f29a8d34ae1d1f75e506b2e5eb681d7.zip opensim-SC-33aa6d172f29a8d34ae1d1f75e506b2e5eb681d7.tar.gz opensim-SC-33aa6d172f29a8d34ae1d1f75e506b2e5eb681d7.tar.bz2 opensim-SC-33aa6d172f29a8d34ae1d1f75e506b2e5eb681d7.tar.xz |
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 47 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/MainServer.cs | 101 | ||||
-rw-r--r-- | OpenSim/Framework/WebUtil.cs | 65 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/EventManager.cs | 120 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs | 6 |
6 files changed, 287 insertions, 54 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index 43a19fa..4e04dd8 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | |||
@@ -54,6 +54,12 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
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 | private HttpServerLogWriter httpserverlog = new HttpServerLogWriter(); | 55 | private HttpServerLogWriter httpserverlog = new HttpServerLogWriter(); |
56 | 56 | ||
57 | /// <summary> | ||
58 | /// Gets or sets the debug level. | ||
59 | /// </summary> | ||
60 | /// <value> | ||
61 | /// See MainServer.DebugLevel. | ||
62 | /// </value> | ||
57 | public int DebugLevel { get; set; } | 63 | public int DebugLevel { get; set; } |
58 | 64 | ||
59 | private volatile int NotSocketErrors = 0; | 65 | private volatile int NotSocketErrors = 0; |
@@ -529,8 +535,8 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
529 | 535 | ||
530 | if (DebugLevel >= 3) | 536 | if (DebugLevel >= 3) |
531 | m_log.DebugFormat( | 537 | m_log.DebugFormat( |
532 | "[BASE HTTP SERVER]: Found a {0} content type handler for {1} {2}", | 538 | "[BASE HTTP SERVER]: HTTP IN {0} content type handler {1} {2} from {3}", |
533 | request.ContentType, request.HttpMethod, request.Url.PathAndQuery); | 539 | request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); |
534 | 540 | ||
535 | buffer = HandleHTTPRequest(request, response); | 541 | buffer = HandleHTTPRequest(request, response); |
536 | break; | 542 | break; |
@@ -541,8 +547,8 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
541 | 547 | ||
542 | if (DebugLevel >= 3) | 548 | if (DebugLevel >= 3) |
543 | m_log.DebugFormat( | 549 | m_log.DebugFormat( |
544 | "[BASE HTTP SERVER]: Found a {0} content type handler for {1} {2}", | 550 | "[BASE HTTP SERVER]: HTTP IN {0} content type handler {1} {2} from {3}", |
545 | request.ContentType, request.HttpMethod, request.Url.PathAndQuery); | 551 | request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); |
546 | 552 | ||
547 | buffer = HandleLLSDRequests(request, response); | 553 | buffer = HandleLLSDRequests(request, response); |
548 | break; | 554 | break; |
@@ -640,7 +646,18 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
640 | uriString, | 646 | uriString, |
641 | requestHandler != null ? requestHandler.Name : "", | 647 | requestHandler != null ? requestHandler.Name : "", |
642 | requestHandler != null ? requestHandler.Description : "", | 648 | requestHandler != null ? requestHandler.Description : "", |
643 | request.RemoteIPEndPoint.ToString(), | 649 | request.RemoteIPEndPoint, |
650 | tickdiff); | ||
651 | } | ||
652 | else if (DebugLevel >= 4) | ||
653 | { | ||
654 | m_log.DebugFormat( | ||
655 | "[BASE HTTP SERVER]: HTTP IN {0} {1} {2} {3} from {4} took {5}ms", | ||
656 | requestMethod, | ||
657 | uriString, | ||
658 | requestHandler != null ? requestHandler.Name : "", | ||
659 | requestHandler != null ? requestHandler.Description : "", | ||
660 | request.RemoteIPEndPoint, | ||
644 | tickdiff); | 661 | tickdiff); |
645 | } | 662 | } |
646 | } | 663 | } |
@@ -649,30 +666,30 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
649 | private void LogIncomingToStreamHandler(OSHttpRequest request, IRequestHandler requestHandler) | 666 | private void LogIncomingToStreamHandler(OSHttpRequest request, IRequestHandler requestHandler) |
650 | { | 667 | { |
651 | m_log.DebugFormat( | 668 | m_log.DebugFormat( |
652 | "[BASE HTTP SERVER]: Found stream handler for {0} {1} {2} {3}", | 669 | "[BASE HTTP SERVER]: HTTP IN stream handler {0} {1} {2} {3} from {4}", |
653 | request.HttpMethod, request.Url.PathAndQuery, requestHandler.Name, requestHandler.Description); | 670 | request.HttpMethod, request.Url.PathAndQuery, requestHandler.Name, requestHandler.Description, request.RemoteIPEndPoint); |
654 | 671 | ||
655 | if (DebugLevel >= 4) | 672 | if (DebugLevel >= 5) |
656 | LogIncomingInDetail(request); | 673 | LogIncomingInDetail(request); |
657 | } | 674 | } |
658 | 675 | ||
659 | private void LogIncomingToContentTypeHandler(OSHttpRequest request) | 676 | private void LogIncomingToContentTypeHandler(OSHttpRequest request) |
660 | { | 677 | { |
661 | m_log.DebugFormat( | 678 | m_log.DebugFormat( |
662 | "[BASE HTTP SERVER]: Found a {0} content type handler for {1} {2}", | 679 | "[BASE HTTP SERVER]: HTTP IN {0} content type handler {1} {2} from {3}", |
663 | request.ContentType, request.HttpMethod, request.Url.PathAndQuery); | 680 | request.ContentType, request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); |
664 | 681 | ||
665 | if (DebugLevel >= 4) | 682 | if (DebugLevel >= 5) |
666 | LogIncomingInDetail(request); | 683 | LogIncomingInDetail(request); |
667 | } | 684 | } |
668 | 685 | ||
669 | private void LogIncomingToXmlRpcHandler(OSHttpRequest request) | 686 | private void LogIncomingToXmlRpcHandler(OSHttpRequest request) |
670 | { | 687 | { |
671 | m_log.DebugFormat( | 688 | m_log.DebugFormat( |
672 | "[BASE HTTP SERVER]: Assuming a generic XMLRPC request for {0} {1}", | 689 | "[BASE HTTP SERVER]: HTTP IN assumed generic XMLRPC request {0} {1} from {2}", |
673 | request.HttpMethod, request.Url.PathAndQuery); | 690 | request.HttpMethod, request.Url.PathAndQuery, request.RemoteIPEndPoint); |
674 | 691 | ||
675 | if (DebugLevel >= 4) | 692 | if (DebugLevel >= 5) |
676 | LogIncomingInDetail(request); | 693 | LogIncomingInDetail(request); |
677 | } | 694 | } |
678 | 695 | ||
@@ -682,7 +699,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
682 | { | 699 | { |
683 | string output; | 700 | string output; |
684 | 701 | ||
685 | if (DebugLevel == 4) | 702 | if (DebugLevel == 5) |
686 | { | 703 | { |
687 | const int sampleLength = 80; | 704 | const int sampleLength = 80; |
688 | char[] sampleChars = new char[sampleLength]; | 705 | char[] sampleChars = new char[sampleLength]; |
diff --git a/OpenSim/Framework/Servers/MainServer.cs b/OpenSim/Framework/Servers/MainServer.cs index 7402c73..72f9cce 100644 --- a/OpenSim/Framework/Servers/MainServer.cs +++ b/OpenSim/Framework/Servers/MainServer.cs | |||
@@ -48,9 +48,12 @@ namespace OpenSim.Framework.Servers | |||
48 | /// Control the printing of certain debug messages. | 48 | /// Control the printing of certain debug messages. |
49 | /// </summary> | 49 | /// </summary> |
50 | /// <remarks> | 50 | /// <remarks> |
51 | /// If DebugLevel >= 1, then short warnings are logged when receiving bad input data. | 51 | /// If DebugLevel >= 1 then short warnings are logged when receiving bad input data. |
52 | /// If DebugLevel >= 2, then long warnings are logged when receiving bad input data. | 52 | /// If DebugLevel >= 2 then long warnings are logged when receiving bad input data. |
53 | /// If DebugLevel >= 3, then short notices about all incoming non-poll HTTP requests are logged. | 53 | /// If DebugLevel >= 3 then short notices about all incoming non-poll HTTP requests are logged. |
54 | /// If DebugLevel >= 4 then the time taken to fulfill the request is logged. | ||
55 | /// If DebugLevel >= 5 then the start of the body of incoming non-poll HTTP requests will be logged. | ||
56 | /// If DebugLevel >= 6 then the entire body of incoming non-poll HTTP requests will be logged. | ||
54 | /// </remarks> | 57 | /// </remarks> |
55 | public static int DebugLevel | 58 | public static int DebugLevel |
56 | { | 59 | { |
@@ -102,7 +105,6 @@ namespace OpenSim.Framework.Servers | |||
102 | get { return new Dictionary<uint, BaseHttpServer>(m_Servers); } | 105 | get { return new Dictionary<uint, BaseHttpServer>(m_Servers); } |
103 | } | 106 | } |
104 | 107 | ||
105 | |||
106 | public static void RegisterHttpConsoleCommands(ICommandConsole console) | 108 | public static void RegisterHttpConsoleCommands(ICommandConsole console) |
107 | { | 109 | { |
108 | console.Commands.AddCommand( | 110 | console.Commands.AddCommand( |
@@ -111,15 +113,20 @@ namespace OpenSim.Framework.Servers | |||
111 | "Show all registered http handlers", HandleShowHttpHandlersCommand); | 113 | "Show all registered http handlers", HandleShowHttpHandlersCommand); |
112 | 114 | ||
113 | console.Commands.AddCommand( | 115 | console.Commands.AddCommand( |
114 | "Debug", false, "debug http", "debug http [<level>]", | 116 | "Debug", false, "debug http", "debug http <in|out|all> [<level>]", |
115 | "Turn on inbound non-poll http request debugging.", | 117 | "Turn on http request logging.", |
116 | "If level <= 0, then no extra logging is done.\n" | 118 | "If in or all and\n" |
117 | + "If level >= 1, then short warnings are logged when receiving bad input data.\n" | 119 | + " level <= 0 then no extra logging is done.\n" |
118 | + "If level >= 2, then long warnings are logged when receiving bad input data.\n" | 120 | + " level >= 1 then short warnings are logged when receiving bad input data.\n" |
119 | + "If level >= 3, then short notices about all incoming non-poll HTTP requests are logged.\n" | 121 | + " level >= 2 then long warnings are logged when receiving bad input data.\n" |
120 | + "If level >= 4, then a sample from the beginning of the incoming data is logged.\n" | 122 | + " level >= 3 then short notices about all incoming non-poll HTTP requests are logged.\n" |
121 | + "If level >= 5, then the entire incoming data is logged.\n" | 123 | + " level >= 4 then the time taken to fulfill the request is logged.\n" |
122 | + "If no level is specified then the current level is returned.", | 124 | + " level >= 5 then a sample from the beginning of the incoming data is logged.\n" |
125 | + " level >= 6 then the entire incoming data is logged.\n" | ||
126 | + " no level is specified then the current level is returned.\n\n" | ||
127 | + "If out or all and\n" | ||
128 | + " level >= 3 then short notices about all outgoing requests going through WebUtil are logged.\n" | ||
129 | + " level >= 4 then the time taken to fulfill the request is logged.\n", | ||
123 | HandleDebugHttpCommand); | 130 | HandleDebugHttpCommand); |
124 | } | 131 | } |
125 | 132 | ||
@@ -127,24 +134,74 @@ namespace OpenSim.Framework.Servers | |||
127 | /// Turn on some debugging values for OpenSim. | 134 | /// Turn on some debugging values for OpenSim. |
128 | /// </summary> | 135 | /// </summary> |
129 | /// <param name="args"></param> | 136 | /// <param name="args"></param> |
130 | private static void HandleDebugHttpCommand(string module, string[] args) | 137 | private static void HandleDebugHttpCommand(string module, string[] cmdparams) |
131 | { | 138 | { |
132 | if (args.Length == 3) | 139 | if (cmdparams.Length < 3) |
140 | { | ||
141 | MainConsole.Instance.Output("Usage: debug http <in|out|all> 0..6"); | ||
142 | return; | ||
143 | } | ||
144 | |||
145 | bool inReqs = false; | ||
146 | bool outReqs = false; | ||
147 | bool allReqs = false; | ||
148 | |||
149 | string subCommand = cmdparams[2]; | ||
150 | |||
151 | if (subCommand.ToLower() == "in") | ||
152 | { | ||
153 | inReqs = true; | ||
154 | } | ||
155 | else if (subCommand.ToLower() == "out") | ||
156 | { | ||
157 | outReqs = true; | ||
158 | } | ||
159 | else if (subCommand.ToLower() == "all") | ||
160 | { | ||
161 | allReqs = true; | ||
162 | } | ||
163 | else | ||
133 | { | 164 | { |
165 | MainConsole.Instance.Output("You must specify in, out or all"); | ||
166 | return; | ||
167 | } | ||
168 | |||
169 | if (cmdparams.Length >= 4) | ||
170 | { | ||
171 | string rawNewDebug = cmdparams[3]; | ||
134 | int newDebug; | 172 | int newDebug; |
135 | if (int.TryParse(args[2], out newDebug)) | 173 | |
174 | if (!int.TryParse(rawNewDebug, out newDebug)) | ||
175 | { | ||
176 | MainConsole.Instance.OutputFormat("{0} is not a valid debug level", rawNewDebug); | ||
177 | return; | ||
178 | } | ||
179 | |||
180 | if (newDebug < 0 || newDebug > 5) | ||
181 | { | ||
182 | MainConsole.Instance.OutputFormat("{0} is outside the valid debug level range of 0..5", newDebug); | ||
183 | return; | ||
184 | } | ||
185 | |||
186 | if (allReqs || inReqs) | ||
136 | { | 187 | { |
137 | MainServer.DebugLevel = newDebug; | 188 | MainServer.DebugLevel = newDebug; |
138 | MainConsole.Instance.OutputFormat("Debug http level set to {0}", newDebug); | 189 | MainConsole.Instance.OutputFormat("IN debug level set to {0}", newDebug); |
190 | } | ||
191 | |||
192 | if (allReqs || outReqs) | ||
193 | { | ||
194 | WebUtil.DebugLevel = newDebug; | ||
195 | MainConsole.Instance.OutputFormat("OUT debug level set to {0}", newDebug); | ||
139 | } | 196 | } |
140 | } | ||
141 | else if (args.Length == 2) | ||
142 | { | ||
143 | MainConsole.Instance.OutputFormat("Current debug http level is {0}", MainServer.DebugLevel); | ||
144 | } | 197 | } |
145 | else | 198 | else |
146 | { | 199 | { |
147 | MainConsole.Instance.Output("Usage: debug http 0..5"); | 200 | if (allReqs || inReqs) |
201 | MainConsole.Instance.OutputFormat("Current IN debug level is {0}", MainServer.DebugLevel); | ||
202 | |||
203 | if (allReqs || outReqs) | ||
204 | MainConsole.Instance.OutputFormat("Current OUT debug level is {0}", WebUtil.DebugLevel); | ||
148 | } | 205 | } |
149 | } | 206 | } |
150 | 207 | ||
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 2aa4af5..64d61f1 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs | |||
@@ -54,6 +54,14 @@ namespace OpenSim.Framework | |||
54 | MethodBase.GetCurrentMethod().DeclaringType); | 54 | MethodBase.GetCurrentMethod().DeclaringType); |
55 | 55 | ||
56 | /// <summary> | 56 | /// <summary> |
57 | /// Control the printing of certain debug messages. | ||
58 | /// </summary> | ||
59 | /// <remarks> | ||
60 | /// If DebugLevel >= 3 then short notices about outgoing HTTP requests are logged. | ||
61 | /// </remarks> | ||
62 | public static int DebugLevel { get; set; } | ||
63 | |||
64 | /// <summary> | ||
57 | /// Request number for diagnostic purposes. | 65 | /// Request number for diagnostic purposes. |
58 | /// </summary> | 66 | /// </summary> |
59 | public static int RequestNumber = 0; | 67 | public static int RequestNumber = 0; |
@@ -146,7 +154,11 @@ namespace OpenSim.Framework | |||
146 | private static OSDMap ServiceOSDRequestWorker(string url, OSDMap data, string method, int timeout, bool compressed) | 154 | private static OSDMap ServiceOSDRequestWorker(string url, OSDMap data, string method, int timeout, bool compressed) |
147 | { | 155 | { |
148 | int reqnum = RequestNumber++; | 156 | int reqnum = RequestNumber++; |
149 | // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); | 157 | |
158 | if (DebugLevel >= 3) | ||
159 | m_log.DebugFormat( | ||
160 | "[WEB UTIL]: HTTP OUT {0} ServiceOSD {1} {2} (timeout {3}, compressed {4})", | ||
161 | reqnum, method, url, timeout, compressed); | ||
150 | 162 | ||
151 | string errorMessage = "unknown error"; | 163 | string errorMessage = "unknown error"; |
152 | int tickstart = Util.EnvironmentTickCount(); | 164 | int tickstart = Util.EnvironmentTickCount(); |
@@ -238,6 +250,10 @@ namespace OpenSim.Framework | |||
238 | strBuffer != null | 250 | strBuffer != null |
239 | ? (strBuffer.Length > MaxRequestDiagLength ? strBuffer.Remove(MaxRequestDiagLength) : strBuffer) | 251 | ? (strBuffer.Length > MaxRequestDiagLength ? strBuffer.Remove(MaxRequestDiagLength) : strBuffer) |
240 | : ""); | 252 | : ""); |
253 | else if (DebugLevel >= 4) | ||
254 | m_log.DebugFormat( | ||
255 | "[WEB UTIL]: HTTP OUT {0} took {1}ms, {2}ms writing", | ||
256 | reqnum, tickdiff, tickdata); | ||
241 | } | 257 | } |
242 | 258 | ||
243 | m_log.DebugFormat( | 259 | m_log.DebugFormat( |
@@ -317,7 +333,11 @@ namespace OpenSim.Framework | |||
317 | { | 333 | { |
318 | int reqnum = RequestNumber++; | 334 | int reqnum = RequestNumber++; |
319 | string method = (data != null && data["RequestMethod"] != null) ? data["RequestMethod"] : "unknown"; | 335 | string method = (data != null && data["RequestMethod"] != null) ? data["RequestMethod"] : "unknown"; |
320 | // m_log.DebugFormat("[WEB UTIL]: <{0}> start form request for {1}, method {2}",reqnum,url,method); | 336 | |
337 | if (DebugLevel >= 3) | ||
338 | m_log.DebugFormat( | ||
339 | "[WEB UTIL]: HTTP OUT {0} ServiceForm {1} {2} (timeout {3})", | ||
340 | reqnum, method, url, timeout); | ||
321 | 341 | ||
322 | string errorMessage = "unknown error"; | 342 | string errorMessage = "unknown error"; |
323 | int tickstart = Util.EnvironmentTickCount(); | 343 | int tickstart = Util.EnvironmentTickCount(); |
@@ -389,6 +409,10 @@ namespace OpenSim.Framework | |||
389 | queryString != null | 409 | queryString != null |
390 | ? (queryString.Length > MaxRequestDiagLength) ? queryString.Remove(MaxRequestDiagLength) : queryString | 410 | ? (queryString.Length > MaxRequestDiagLength) ? queryString.Remove(MaxRequestDiagLength) : queryString |
391 | : ""); | 411 | : ""); |
412 | else if (DebugLevel >= 4) | ||
413 | m_log.DebugFormat( | ||
414 | "[WEB UTIL]: HTTP OUT {0} took {1}ms, {2}ms writing", | ||
415 | reqnum, tickdiff, tickdata); | ||
392 | } | 416 | } |
393 | 417 | ||
394 | m_log.WarnFormat("[SERVICE FORM]: <{0}> form request to {1} failed: {2}", reqnum, url, errorMessage); | 418 | m_log.WarnFormat("[SERVICE FORM]: <{0}> form request to {1} failed: {2}", reqnum, url, errorMessage); |
@@ -643,7 +667,6 @@ namespace OpenSim.Framework | |||
643 | /// <returns></returns> | 667 | /// <returns></returns> |
644 | public static string[] GetPreferredImageTypes(string accept) | 668 | public static string[] GetPreferredImageTypes(string accept) |
645 | { | 669 | { |
646 | |||
647 | if (accept == null || accept == string.Empty) | 670 | if (accept == null || accept == string.Empty) |
648 | return new string[0]; | 671 | return new string[0]; |
649 | 672 | ||
@@ -695,13 +718,15 @@ namespace OpenSim.Framework | |||
695 | string requestUrl, TRequest obj, Action<TResponse> action) | 718 | string requestUrl, TRequest obj, Action<TResponse> action) |
696 | { | 719 | { |
697 | int reqnum = WebUtil.RequestNumber++; | 720 | int reqnum = WebUtil.RequestNumber++; |
698 | // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); | 721 | |
722 | if (WebUtil.DebugLevel >= 3) | ||
723 | m_log.DebugFormat( | ||
724 | "[WEB UTIL]: HTTP OUT {0} AsynchronousRequestObject {1} {2}", | ||
725 | reqnum, verb, requestUrl); | ||
699 | 726 | ||
700 | int tickstart = Util.EnvironmentTickCount(); | 727 | int tickstart = Util.EnvironmentTickCount(); |
701 | int tickdata = 0; | 728 | int tickdata = 0; |
702 | 729 | ||
703 | // m_log.DebugFormat("[ASYNC REQUEST]: Starting {0} {1}", verb, requestUrl); | ||
704 | |||
705 | Type type = typeof(TRequest); | 730 | Type type = typeof(TRequest); |
706 | 731 | ||
707 | WebRequest request = WebRequest.Create(requestUrl); | 732 | WebRequest request = WebRequest.Create(requestUrl); |
@@ -862,6 +887,12 @@ namespace OpenSim.Framework | |||
862 | tickdata, | 887 | tickdata, |
863 | originalRequest); | 888 | originalRequest); |
864 | } | 889 | } |
890 | else if (WebUtil.DebugLevel >= 4) | ||
891 | { | ||
892 | m_log.DebugFormat( | ||
893 | "[WEB UTIL]: HTTP OUT {0} took {1}ms, {2}ms writing", | ||
894 | reqnum, tickdiff, tickdata); | ||
895 | } | ||
865 | } | 896 | } |
866 | } | 897 | } |
867 | 898 | ||
@@ -882,7 +913,11 @@ namespace OpenSim.Framework | |||
882 | public static string MakeRequest(string verb, string requestUrl, string obj) | 913 | public static string MakeRequest(string verb, string requestUrl, string obj) |
883 | { | 914 | { |
884 | int reqnum = WebUtil.RequestNumber++; | 915 | int reqnum = WebUtil.RequestNumber++; |
885 | // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); | 916 | |
917 | if (WebUtil.DebugLevel >= 3) | ||
918 | m_log.DebugFormat( | ||
919 | "[WEB UTIL]: HTTP OUT {0} SynchronousRestForms {1} {2}", | ||
920 | reqnum, verb, requestUrl); | ||
886 | 921 | ||
887 | int tickstart = Util.EnvironmentTickCount(); | 922 | int tickstart = Util.EnvironmentTickCount(); |
888 | int tickdata = 0; | 923 | int tickdata = 0; |
@@ -974,6 +1009,10 @@ namespace OpenSim.Framework | |||
974 | tickdiff, | 1009 | tickdiff, |
975 | tickdata, | 1010 | tickdata, |
976 | obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); | 1011 | obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); |
1012 | else if (WebUtil.DebugLevel >= 4) | ||
1013 | m_log.DebugFormat( | ||
1014 | "[WEB UTIL]: HTTP OUT {0} took {1}ms, {2}ms writing", | ||
1015 | reqnum, tickdiff, tickdata); | ||
977 | 1016 | ||
978 | return respstring; | 1017 | return respstring; |
979 | } | 1018 | } |
@@ -998,7 +1037,11 @@ namespace OpenSim.Framework | |||
998 | public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj) | 1037 | public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj) |
999 | { | 1038 | { |
1000 | int reqnum = WebUtil.RequestNumber++; | 1039 | int reqnum = WebUtil.RequestNumber++; |
1001 | // m_log.DebugFormat("[WEB UTIL]: <{0}> start osd request for {1}, method {2}",reqnum,url,method); | 1040 | |
1041 | if (WebUtil.DebugLevel >= 3) | ||
1042 | m_log.DebugFormat( | ||
1043 | "[WEB UTIL]: HTTP OUT {0} SynchronousRestObject {1} {2}", | ||
1044 | reqnum, verb, requestUrl); | ||
1002 | 1045 | ||
1003 | int tickstart = Util.EnvironmentTickCount(); | 1046 | int tickstart = Util.EnvironmentTickCount(); |
1004 | int tickdata = 0; | 1047 | int tickdata = 0; |
@@ -1119,6 +1162,12 @@ namespace OpenSim.Framework | |||
1119 | tickdata, | 1162 | tickdata, |
1120 | originalRequest); | 1163 | originalRequest); |
1121 | } | 1164 | } |
1165 | else if (WebUtil.DebugLevel >= 4) | ||
1166 | { | ||
1167 | m_log.DebugFormat( | ||
1168 | "[WEB UTIL]: HTTP OUT {0} took {1}ms, {2}ms writing", | ||
1169 | reqnum, tickdiff, tickdata); | ||
1170 | } | ||
1122 | 1171 | ||
1123 | return deserial; | 1172 | return deserial; |
1124 | } | 1173 | } |
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index e1c9c8e..f079e00 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -184,6 +184,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
184 | 184 | ||
185 | public delegate void OnPluginConsoleDelegate(string[] args); | 185 | public delegate void OnPluginConsoleDelegate(string[] args); |
186 | 186 | ||
187 | /// <summary> | ||
188 | /// Triggered after <see cref="OpenSim.IApplicationPlugin.PostInitialise"/> | ||
189 | /// has been called for all <see cref="OpenSim.IApplicationPlugin"/> | ||
190 | /// loaded via <see cref="OpenSim.OpenSimBase.LoadPlugins"/>. | ||
191 | /// Handlers for this event are typically used to parse the arguments | ||
192 | /// from <see cref="OnPluginConsoleDelegate"/> in order to process or | ||
193 | /// filter the arguments and pass them onto <see cref="OpenSim.Region.CoreModules.Framework.InterfaceCommander.Commander.ProcessConsoleCommand"/> | ||
194 | /// </summary> | ||
195 | /// <remarks> | ||
196 | /// Triggered by <see cref="TriggerOnPluginConsole"/> in | ||
197 | /// <see cref="Scene.SendCommandToPlugins"/> via | ||
198 | /// <see cref="SceneManager.SendCommandToPluginModules"/> via | ||
199 | /// <see cref="OpenSim.OpenSimBase.HandleCommanderCommand"/> via | ||
200 | /// <see cref="OpenSim.OpenSimBase.AddPluginCommands"/> via | ||
201 | /// <see cref="OpenSim.OpenSimBase.StartupSpecific"/> | ||
202 | /// </remarks> | ||
187 | public event OnPluginConsoleDelegate OnPluginConsole; | 203 | public event OnPluginConsoleDelegate OnPluginConsole; |
188 | 204 | ||
189 | /// <summary> | 205 | /// <summary> |
@@ -198,6 +214,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
198 | 214 | ||
199 | public delegate void OnSetRootAgentSceneDelegate(UUID agentID, Scene scene); | 215 | public delegate void OnSetRootAgentSceneDelegate(UUID agentID, Scene scene); |
200 | 216 | ||
217 | /// <summary> | ||
218 | /// Triggered before the grunt work for adding a root agent to a | ||
219 | /// scene has been performed (resuming attachment scripts, physics, | ||
220 | /// animations etc.) | ||
221 | /// </summary> | ||
222 | /// <remarks> | ||
223 | /// Triggered before <see cref="OnMakeRootAgent"/> | ||
224 | /// by <see cref="TriggerSetRootAgentScene"/> | ||
225 | /// in <see cref="ScenePresence.MakeRootAgent"/> | ||
226 | /// via <see cref="Scene.AgentCrossing"/> | ||
227 | /// and <see cref="ScenePresence.CompleteMovement"/> | ||
228 | /// </remarks> | ||
201 | public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; | 229 | public event OnSetRootAgentSceneDelegate OnSetRootAgentScene; |
202 | 230 | ||
203 | /// <summary> | 231 | /// <summary> |
@@ -222,12 +250,34 @@ namespace OpenSim.Region.Framework.Scenes | |||
222 | /// <summary> | 250 | /// <summary> |
223 | /// Fired when an object is touched/grabbed. | 251 | /// Fired when an object is touched/grabbed. |
224 | /// </summary> | 252 | /// </summary> |
253 | /// <remarks> | ||
225 | /// The originalID is the local ID of the part that was actually touched. The localID itself is always that of | 254 | /// The originalID is the local ID of the part that was actually touched. The localID itself is always that of |
226 | /// the root part. | 255 | /// the root part. |
256 | /// Triggerd in response to <see cref="OpenSim.Framework.IClientAPI.OnGrabObject"/> | ||
257 | /// via <see cref="TriggerObjectGrab"/> | ||
258 | /// in <see cref="Scene.ProcessObjectGrab"/> | ||
259 | /// </remarks> | ||
227 | public event ObjectGrabDelegate OnObjectGrab; | 260 | public event ObjectGrabDelegate OnObjectGrab; |
228 | public delegate void ObjectGrabDelegate(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs); | 261 | public delegate void ObjectGrabDelegate(uint localID, uint originalID, Vector3 offsetPos, IClientAPI remoteClient, SurfaceTouchEventArgs surfaceArgs); |
229 | 262 | ||
263 | /// <summary> | ||
264 | /// Triggered when an object is being touched/grabbed continuously. | ||
265 | /// </summary> | ||
266 | /// <remarks> | ||
267 | /// Triggered in response to <see cref="OpenSim.Framework.IClientAPI.OnGrabUpdate"/> | ||
268 | /// via <see cref="TriggerObjectGrabbing"/> | ||
269 | /// in <see cref="Scene.ProcessObjectGrabUpdate"/> | ||
270 | /// </remarks> | ||
230 | public event ObjectGrabDelegate OnObjectGrabbing; | 271 | public event ObjectGrabDelegate OnObjectGrabbing; |
272 | |||
273 | /// <summary> | ||
274 | /// Triggered when an object stops being touched/grabbed. | ||
275 | /// </summary> | ||
276 | /// <remarks> | ||
277 | /// Triggered in response to <see cref="OpenSim.Framework.IClientAPI.OnDeGrabObject"/> | ||
278 | /// via <see cref="TriggerObjectDeGrab"/> | ||
279 | /// in <see cref="Scene.ProcessObjectDeGrab"/> | ||
280 | /// </remarks> | ||
231 | public event ObjectDeGrabDelegate OnObjectDeGrab; | 281 | public event ObjectDeGrabDelegate OnObjectDeGrab; |
232 | public event ScriptResetDelegate OnScriptReset; | 282 | public event ScriptResetDelegate OnScriptReset; |
233 | 283 | ||
@@ -391,15 +441,36 @@ namespace OpenSim.Region.Framework.Scenes | |||
391 | public event ScriptColliding OnScriptLandColliderEnd; | 441 | public event ScriptColliding OnScriptLandColliderEnd; |
392 | 442 | ||
393 | public delegate void OnMakeChildAgentDelegate(ScenePresence presence); | 443 | public delegate void OnMakeChildAgentDelegate(ScenePresence presence); |
444 | |||
445 | /// <summary> | ||
446 | /// Triggered when an agent has been made a child agent of a scene. | ||
447 | /// </summary> | ||
448 | /// <remarks> | ||
449 | /// Triggered by <see cref="TriggerOnMakeChildAgent"/> | ||
450 | /// in <see cref="ScenePresence.MakeChildAgent"/> | ||
451 | /// via <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.CrossAgentToNewRegionAsync"/>, | ||
452 | /// <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.DoTeleport"/>, | ||
453 | /// <see cref="OpenSim.Region.CoreModules.InterGrid.KillAUser.ShutdownNoLogout"/> | ||
454 | /// </remarks> | ||
394 | public event OnMakeChildAgentDelegate OnMakeChildAgent; | 455 | public event OnMakeChildAgentDelegate OnMakeChildAgent; |
395 | 456 | ||
396 | public delegate void OnSaveNewWindlightProfileDelegate(); | 457 | public delegate void OnSaveNewWindlightProfileDelegate(); |
397 | public delegate void OnSendNewWindlightProfileTargetedDelegate(RegionLightShareData wl, UUID user); | 458 | public delegate void OnSendNewWindlightProfileTargetedDelegate(RegionLightShareData wl, UUID user); |
398 | 459 | ||
399 | /// <summary> | 460 | /// <summary> |
461 | /// Triggered after the grunt work for adding a root agent to a | ||
462 | /// scene has been performed (resuming attachment scripts, physics, | ||
463 | /// animations etc.) | ||
464 | /// </summary> | ||
465 | /// <remarks> | ||
400 | /// This event is on the critical path for transferring an avatar from one region to another. Try and do | 466 | /// This event is on the critical path for transferring an avatar from one region to another. Try and do |
401 | /// as little work on this event as possible, or do work asynchronously. | 467 | /// as little work on this event as possible, or do work asynchronously. |
402 | /// </summary> | 468 | /// Triggered after <see cref="OnSetRootAgentScene"/> |
469 | /// by <see cref="TriggerOnMakeRootAgent"/> | ||
470 | /// in <see cref="ScenePresence.MakeRootAgent"/> | ||
471 | /// via <see cref="Scene.AgentCrossing"/> | ||
472 | /// and <see cref="ScenePresence.CompleteMovement"/> | ||
473 | /// </remarks> | ||
403 | public event Action<ScenePresence> OnMakeRootAgent; | 474 | public event Action<ScenePresence> OnMakeRootAgent; |
404 | 475 | ||
405 | public event OnSendNewWindlightProfileTargetedDelegate OnSendNewWindlightProfileTargeted; | 476 | public event OnSendNewWindlightProfileTargetedDelegate OnSendNewWindlightProfileTargeted; |
@@ -425,9 +496,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
425 | public event AvatarKillData OnAvatarKilled; | 496 | public event AvatarKillData OnAvatarKilled; |
426 | public delegate void AvatarKillData(uint KillerLocalID, ScenePresence avatar); | 497 | public delegate void AvatarKillData(uint KillerLocalID, ScenePresence avatar); |
427 | 498 | ||
428 | // public delegate void ScriptTimerEvent(uint localID, double timerinterval); | 499 | /* |
429 | 500 | public delegate void ScriptTimerEvent(uint localID, double timerinterval); | |
430 | // public event ScriptTimerEvent OnScriptTimerEvent; | 501 | public event ScriptTimerEvent OnScriptTimerEvent; |
502 | */ | ||
431 | 503 | ||
432 | public delegate void EstateToolsSunUpdate(ulong regionHandle, bool FixedTime, bool EstateSun, float LindenHour); | 504 | public delegate void EstateToolsSunUpdate(ulong regionHandle, bool FixedTime, bool EstateSun, float LindenHour); |
433 | public delegate void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID); | 505 | public delegate void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID); |
@@ -437,12 +509,27 @@ namespace OpenSim.Region.Framework.Scenes | |||
437 | /// <summary> | 509 | /// <summary> |
438 | /// Triggered when an object is added to the scene. | 510 | /// Triggered when an object is added to the scene. |
439 | /// </summary> | 511 | /// </summary> |
512 | /// <remarks> | ||
513 | /// Triggered by <see cref="TriggerObjectAddedToScene"/> | ||
514 | /// in <see cref="Scene.AddNewSceneObject"/>, | ||
515 | /// <see cref="Scene.DuplicateObject"/>, | ||
516 | /// <see cref="Scene.doObjectDuplicateOnRay"/> | ||
517 | /// </remarks> | ||
440 | public event Action<SceneObjectGroup> OnObjectAddedToScene; | 518 | public event Action<SceneObjectGroup> OnObjectAddedToScene; |
441 | 519 | ||
442 | /// <summary> | 520 | /// <summary> |
443 | /// Triggered when an object is removed from the scene. | 521 | /// Delegate for <see cref="OnObjectBeingRemovedFromScene"/> |
444 | /// </summary> | 522 | /// </summary> |
523 | /// <param name="obj">The object being removed from the scene</param> | ||
445 | public delegate void ObjectBeingRemovedFromScene(SceneObjectGroup obj); | 524 | public delegate void ObjectBeingRemovedFromScene(SceneObjectGroup obj); |
525 | |||
526 | /// <summary> | ||
527 | /// Triggered when an object is removed from the scene. | ||
528 | /// </summary> | ||
529 | /// <remarks> | ||
530 | /// Triggered by <see cref="TriggerObjectBeingRemovedFromScene"/> | ||
531 | /// in <see cref="Scene.DeleteSceneObject"/> | ||
532 | /// </remarks> | ||
446 | public event ObjectBeingRemovedFromScene OnObjectBeingRemovedFromScene; | 533 | public event ObjectBeingRemovedFromScene OnObjectBeingRemovedFromScene; |
447 | 534 | ||
448 | public delegate void NoticeNoLandDataFromStorage(); | 535 | public delegate void NoticeNoLandDataFromStorage(); |
@@ -628,9 +715,28 @@ namespace OpenSim.Region.Framework.Scenes | |||
628 | public event PrimsLoaded OnPrimsLoaded; | 715 | public event PrimsLoaded OnPrimsLoaded; |
629 | 716 | ||
630 | public delegate void TeleportStart(IClientAPI client, GridRegion destination, GridRegion finalDestination, uint teleportFlags, bool gridLogout); | 717 | public delegate void TeleportStart(IClientAPI client, GridRegion destination, GridRegion finalDestination, uint teleportFlags, bool gridLogout); |
718 | |||
719 | /// <summary> | ||
720 | /// Triggered when a teleport starts | ||
721 | /// </summary> | ||
722 | /// <remarks> | ||
723 | /// Triggered by <see cref="TriggerTeleportStart"/> | ||
724 | /// in <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.CreateAgent"/> | ||
725 | /// and <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.HGEntityTransferModule.CreateAgent"/> | ||
726 | /// via <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.DoTeleport"/> | ||
727 | /// </remarks> | ||
631 | public event TeleportStart OnTeleportStart; | 728 | public event TeleportStart OnTeleportStart; |
632 | 729 | ||
633 | public delegate void TeleportFail(IClientAPI client, bool gridLogout); | 730 | public delegate void TeleportFail(IClientAPI client, bool gridLogout); |
731 | |||
732 | /// <summary> | ||
733 | /// Trigered when a teleport fails. | ||
734 | /// </summary> | ||
735 | /// <remarks> | ||
736 | /// Triggered by <see cref="TriggerTeleportFail"/> | ||
737 | /// in <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.Fail"/> | ||
738 | /// via <see cref="OpenSim.Region.CoreModules.Framework.EntityTransfer.EntityTransferModule.DoTeleport"/> | ||
739 | /// </remarks> | ||
634 | public event TeleportFail OnTeleportFail; | 740 | public event TeleportFail OnTeleportFail; |
635 | 741 | ||
636 | public class MoneyTransferArgs : EventArgs | 742 | public class MoneyTransferArgs : EventArgs |
@@ -638,7 +744,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
638 | public UUID sender; | 744 | public UUID sender; |
639 | public UUID receiver; | 745 | public UUID receiver; |
640 | 746 | ||
641 | // Always false. The SL protocol sucks. | 747 | /// <summary> |
748 | /// Always false. The SL protocol sucks. | ||
749 | /// </summary> | ||
642 | public bool authenticated = false; | 750 | public bool authenticated = false; |
643 | 751 | ||
644 | public int amount; | 752 | public int amount; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index c873cdf..e9d1d42 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -861,6 +861,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
861 | } | 861 | } |
862 | 862 | ||
863 | // FIXME: Ultimately this should be in a module. | 863 | // FIXME: Ultimately this should be in a module. |
864 | SendPeriodicAppearanceUpdates = true; | ||
865 | |||
864 | IConfig appearanceConfig = m_config.Configs["Appearance"]; | 866 | IConfig appearanceConfig = m_config.Configs["Appearance"]; |
865 | if (appearanceConfig != null) | 867 | if (appearanceConfig != null) |
866 | { | 868 | { |
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs index ca956fb..a014798 100644 --- a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs +++ b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCConnector.cs | |||
@@ -231,12 +231,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat | |||
231 | if (m_server == null || m_baseNick == null || m_ircChannel == null || m_user == null) | 231 | if (m_server == null || m_baseNick == null || m_ircChannel == null || m_user == null) |
232 | throw new Exception("Invalid connector configuration"); | 232 | throw new Exception("Invalid connector configuration"); |
233 | 233 | ||
234 | // Generate an initial nickname if randomizing is enabled | 234 | // Generate an initial nickname |
235 | 235 | ||
236 | if (m_randomizeNick) | 236 | if (m_randomizeNick) |
237 | { | ||
238 | m_nick = m_baseNick + Util.RandomClass.Next(1, 99); | 237 | m_nick = m_baseNick + Util.RandomClass.Next(1, 99); |
239 | } | 238 | else |
239 | m_nick = m_baseNick; | ||
240 | 240 | ||
241 | m_log.InfoFormat("[IRC-Connector-{0}]: Initialization complete", idn); | 241 | m_log.InfoFormat("[IRC-Connector-{0}]: Initialization complete", idn); |
242 | 242 | ||