aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/Servers/HttpServer
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs121
1 files changed, 59 insertions, 62 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
index d20f8c9..452df38 100644
--- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs
@@ -51,7 +51,7 @@ namespace OpenSim.Framework.Servers.HttpServer
51 { 51 {
52 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 52 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
53 private HttpServerLogWriter httpserverlog = new HttpServerLogWriter(); 53 private HttpServerLogWriter httpserverlog = new HttpServerLogWriter();
54 54
55 private volatile int NotSocketErrors = 0; 55 private volatile int NotSocketErrors = 0;
56 public volatile bool HTTPDRunning = false; 56 public volatile bool HTTPDRunning = false;
57 57
@@ -160,7 +160,7 @@ namespace OpenSim.Framework.Servers.HttpServer
160 m_rpcHandlers[method] = handler; 160 m_rpcHandlers[method] = handler;
161 m_rpcHandlersKeepAlive[method] = keepAlive; // default 161 m_rpcHandlersKeepAlive[method] = keepAlive; // default
162 } 162 }
163 163
164 return true; 164 return true;
165 } 165 }
166 166
@@ -182,7 +182,7 @@ namespace OpenSim.Framework.Servers.HttpServer
182 public bool AddHTTPHandler(string methodName, GenericHTTPMethod handler) 182 public bool AddHTTPHandler(string methodName, GenericHTTPMethod handler)
183 { 183 {
184 //m_log.DebugFormat("[BASE HTTP SERVER]: Registering {0}", methodName); 184 //m_log.DebugFormat("[BASE HTTP SERVER]: Registering {0}", methodName);
185 185
186 lock (m_HTTPHandlers) 186 lock (m_HTTPHandlers)
187 { 187 {
188 if (!m_HTTPHandlers.ContainsKey(methodName)) 188 if (!m_HTTPHandlers.ContainsKey(methodName))
@@ -204,14 +204,14 @@ namespace OpenSim.Framework.Servers.HttpServer
204 if (!m_pollHandlers.ContainsKey(methodName)) 204 if (!m_pollHandlers.ContainsKey(methodName))
205 { 205 {
206 m_pollHandlers.Add(methodName,args); 206 m_pollHandlers.Add(methodName,args);
207 pollHandlerResult = true; 207 pollHandlerResult = true;
208 } 208 }
209 } 209 }
210 210
211 if (pollHandlerResult) 211 if (pollHandlerResult)
212 return AddHTTPHandler(methodName, handler); 212 return AddHTTPHandler(methodName, handler);
213 213
214 return false; 214 return false;
215 } 215 }
216 216
217 // Note that the agent string is provided simply to differentiate 217 // Note that the agent string is provided simply to differentiate
@@ -257,51 +257,51 @@ namespace OpenSim.Framework.Servers.HttpServer
257 { 257 {
258 IHttpClientContext context = (IHttpClientContext)source; 258 IHttpClientContext context = (IHttpClientContext)source;
259 IHttpRequest request = args.Request; 259 IHttpRequest request = args.Request;
260 260
261 PollServiceEventArgs psEvArgs; 261 PollServiceEventArgs psEvArgs;
262 262
263 if (TryGetPollServiceHTTPHandler(request.UriPath.ToString(), out psEvArgs)) 263 if (TryGetPollServiceHTTPHandler(request.UriPath.ToString(), out psEvArgs))
264 { 264 {
265 PollServiceHttpRequest psreq = new PollServiceHttpRequest(psEvArgs, context, request); 265 PollServiceHttpRequest psreq = new PollServiceHttpRequest(psEvArgs, context, request);
266 266
267 if (psEvArgs.Request != null) 267 if (psEvArgs.Request != null)
268 { 268 {
269 OSHttpRequest req = new OSHttpRequest(context, request); 269 OSHttpRequest req = new OSHttpRequest(context, request);
270 270
271 Stream requestStream = req.InputStream; 271 Stream requestStream = req.InputStream;
272 272
273 Encoding encoding = Encoding.UTF8; 273 Encoding encoding = Encoding.UTF8;
274 StreamReader reader = new StreamReader(requestStream, encoding); 274 StreamReader reader = new StreamReader(requestStream, encoding);
275 275
276 string requestBody = reader.ReadToEnd(); 276 string requestBody = reader.ReadToEnd();
277 277
278 Hashtable keysvals = new Hashtable(); 278 Hashtable keysvals = new Hashtable();
279 Hashtable headervals = new Hashtable(); 279 Hashtable headervals = new Hashtable();
280 280
281 string[] querystringkeys = req.QueryString.AllKeys; 281 string[] querystringkeys = req.QueryString.AllKeys;
282 string[] rHeaders = req.Headers.AllKeys; 282 string[] rHeaders = req.Headers.AllKeys;
283 283
284 keysvals.Add("body", requestBody); 284 keysvals.Add("body", requestBody);
285 keysvals.Add("uri", req.RawUrl); 285 keysvals.Add("uri", req.RawUrl);
286 keysvals.Add("content-type", req.ContentType); 286 keysvals.Add("content-type", req.ContentType);
287 keysvals.Add("http-method", req.HttpMethod); 287 keysvals.Add("http-method", req.HttpMethod);
288 288
289 foreach (string queryname in querystringkeys) 289 foreach (string queryname in querystringkeys)
290 { 290 {
291 keysvals.Add(queryname, req.QueryString[queryname]); 291 keysvals.Add(queryname, req.QueryString[queryname]);
292 } 292 }
293 293
294 foreach (string headername in rHeaders) 294 foreach (string headername in rHeaders)
295 { 295 {
296 headervals[headername] = req.Headers[headername]; 296 headervals[headername] = req.Headers[headername];
297 } 297 }
298 298
299 keysvals.Add("headers", headervals); 299 keysvals.Add("headers", headervals);
300 keysvals.Add("querystringkeys", querystringkeys); 300 keysvals.Add("querystringkeys", querystringkeys);
301 301
302 psEvArgs.Request(psreq.RequestID, keysvals); 302 psEvArgs.Request(psreq.RequestID, keysvals);
303 } 303 }
304 304
305 m_PollServiceManager.Enqueue(psreq); 305 m_PollServiceManager.Enqueue(psreq);
306 } 306 }
307 else 307 else
@@ -348,10 +348,10 @@ namespace OpenSim.Framework.Servers.HttpServer
348 { 348 {
349 try 349 try
350 { 350 {
351// m_log.Debug("[BASE HTTP SERVER]: Handling request to " + request.RawUrl); 351// m_log.Debug("[BASE HTTP SERVER]: Handling request to " + request.RawUrl);
352 352
353 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", true); 353 Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", true);
354 354
355 // This is the REST agent interface. We require an agent to properly identify 355 // This is the REST agent interface. We require an agent to properly identify
356 // itself. If the REST handler recognizes the prefix it will attempt to 356 // itself. If the REST handler recognizes the prefix it will attempt to
357 // satisfy the request. If it is not recognizable, and no damage has occurred 357 // satisfy the request. If it is not recognizable, and no damage has occurred
@@ -456,7 +456,7 @@ namespace OpenSim.Framework.Servers.HttpServer
456 } 456 }
457 457
458 request.InputStream.Close(); 458 request.InputStream.Close();
459 459
460 // HTTP IN support. The script engine taes it from here 460 // HTTP IN support. The script engine taes it from here
461 // Nothing to worry about for us. 461 // Nothing to worry about for us.
462 // 462 //
@@ -540,7 +540,7 @@ namespace OpenSim.Framework.Servers.HttpServer
540 HandleLLSDRequests(request, response); 540 HandleLLSDRequests(request, response);
541 return; 541 return;
542 } 542 }
543 543
544// m_log.DebugFormat("[BASE HTTP SERVER]: Checking for HTTP Handler for request {0}", request.RawUrl); 544// m_log.DebugFormat("[BASE HTTP SERVER]: Checking for HTTP Handler for request {0}", request.RawUrl);
545 if (DoWeHaveAHTTPHandler(request.RawUrl)) 545 if (DoWeHaveAHTTPHandler(request.RawUrl))
546 { 546 {
@@ -594,7 +594,7 @@ namespace OpenSim.Framework.Servers.HttpServer
594 } 594 }
595 } 595 }
596 } 596 }
597 597
598 if (String.IsNullOrEmpty(bestMatch)) 598 if (String.IsNullOrEmpty(bestMatch))
599 { 599 {
600 streamHandler = null; 600 streamHandler = null;
@@ -641,7 +641,7 @@ namespace OpenSim.Framework.Servers.HttpServer
641 private bool TryGetHTTPHandler(string handlerKey, out GenericHTTPMethod HTTPHandler) 641 private bool TryGetHTTPHandler(string handlerKey, out GenericHTTPMethod HTTPHandler)
642 { 642 {
643// m_log.DebugFormat("[BASE HTTP HANDLER]: Looking for HTTP handler for {0}", handlerKey); 643// m_log.DebugFormat("[BASE HTTP HANDLER]: Looking for HTTP handler for {0}", handlerKey);
644 644
645 string bestMatch = null; 645 string bestMatch = null;
646 646
647 lock (m_HTTPHandlers) 647 lock (m_HTTPHandlers)
@@ -727,14 +727,14 @@ namespace OpenSim.Framework.Servers.HttpServer
727 { 727 {
728 xmlRprcRequest.Params.Add(request.RemoteIPEndPoint); // Param[1] 728 xmlRprcRequest.Params.Add(request.RemoteIPEndPoint); // Param[1]
729 XmlRpcResponse xmlRpcResponse; 729 XmlRpcResponse xmlRpcResponse;
730 730
731 XmlRpcMethod method; 731 XmlRpcMethod method;
732 bool methodWasFound; 732 bool methodWasFound;
733 lock (m_rpcHandlers) 733 lock (m_rpcHandlers)
734 { 734 {
735 methodWasFound = m_rpcHandlers.TryGetValue(methodName, out method); 735 methodWasFound = m_rpcHandlers.TryGetValue(methodName, out method);
736 } 736 }
737 737
738 if (methodWasFound) 738 if (methodWasFound)
739 { 739 {
740 xmlRprcRequest.Params.Add(request.Url); // Param[2] 740 xmlRprcRequest.Params.Add(request.Url); // Param[2]
@@ -766,10 +766,10 @@ namespace OpenSim.Framework.Servers.HttpServer
766 else 766 else
767 { 767 {
768 xmlRpcResponse = new XmlRpcResponse(); 768 xmlRpcResponse = new XmlRpcResponse();
769 769
770 // Code set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php 770 // Code set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php
771 xmlRpcResponse.SetFault( 771 xmlRpcResponse.SetFault(
772 XmlRpcErrorCodes.SERVER_ERROR_METHOD, 772 XmlRpcErrorCodes.SERVER_ERROR_METHOD,
773 String.Format("Requested method [{0}] not found", methodName)); 773 String.Format("Requested method [{0}] not found", methodName));
774 } 774 }
775 775
@@ -786,11 +786,11 @@ namespace OpenSim.Framework.Servers.HttpServer
786 response.KeepAlive = false; 786 response.KeepAlive = false;
787 787
788 m_log.ErrorFormat("[BASE HTTP SERVER]: Handler not found for http request {0}", request.RawUrl); 788 m_log.ErrorFormat("[BASE HTTP SERVER]: Handler not found for http request {0}", request.RawUrl);
789 789
790 response.SendChunked = false; 790 response.SendChunked = false;
791 response.ContentLength64 = buf.Length; 791 response.ContentLength64 = buf.Length;
792 response.ContentEncoding = Encoding.UTF8; 792 response.ContentEncoding = Encoding.UTF8;
793 793
794 try 794 try
795 { 795 {
796 response.OutputStream.Write(buf, 0, buf.Length); 796 response.OutputStream.Write(buf, 0, buf.Length);
@@ -872,13 +872,13 @@ namespace OpenSim.Framework.Servers.HttpServer
872 872
873 OSD llsdRequest = null; 873 OSD llsdRequest = null;
874 OSD llsdResponse = null; 874 OSD llsdResponse = null;
875 875
876 bool LegacyLLSDLoginLibOMV = (requestBody.Contains("passwd") && requestBody.Contains("mac") && requestBody.Contains("viewer_digest")); 876 bool LegacyLLSDLoginLibOMV = (requestBody.Contains("passwd") && requestBody.Contains("mac") && requestBody.Contains("viewer_digest"));
877 877
878 if (requestBody.Length == 0) 878 if (requestBody.Length == 0)
879 // Get Request 879 // Get Request
880 { 880 {
881 requestBody = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><llsd><map><key>request</key><string>get</string></map></llsd>"; 881 requestBody = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><llsd><map><key>request</key><string>get</string></map></llsd>";
882 } 882 }
883 try 883 try
884 { 884 {
@@ -1090,7 +1090,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1090 string bestMatch = null; 1090 string bestMatch = null;
1091 1091
1092 //m_log.DebugFormat("[BASE HTTP HANDLER]: Checking if we have an HTTP handler for {0}", searchquery); 1092 //m_log.DebugFormat("[BASE HTTP HANDLER]: Checking if we have an HTTP handler for {0}", searchquery);
1093 1093
1094 lock (m_HTTPHandlers) 1094 lock (m_HTTPHandlers)
1095 { 1095 {
1096 foreach (string pattern in m_HTTPHandlers.Keys) 1096 foreach (string pattern in m_HTTPHandlers.Keys)
@@ -1156,7 +1156,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1156 // You have to specifically register for '/' and to get it, you must specificaly request it 1156 // You have to specifically register for '/' and to get it, you must specificaly request it
1157 // 1157 //
1158 if (pattern == "/" && searchquery == "/" || pattern != "/") 1158 if (pattern == "/" && searchquery == "/" || pattern != "/")
1159 bestMatch = pattern; 1159 bestMatch = pattern;
1160 } 1160 }
1161 } 1161 }
1162 } 1162 }
@@ -1236,11 +1236,11 @@ namespace OpenSim.Framework.Servers.HttpServer
1236 } 1236 }
1237 1237
1238 public void HandleHTTPRequest(OSHttpRequest request, OSHttpResponse response) 1238 public void HandleHTTPRequest(OSHttpRequest request, OSHttpResponse response)
1239 { 1239 {
1240// m_log.DebugFormat( 1240// m_log.DebugFormat(
1241// "[BASE HTTP SERVER]: HandleHTTPRequest for request to {0}, method {1}", 1241// "[BASE HTTP SERVER]: HandleHTTPRequest for request to {0}, method {1}",
1242// request.RawUrl, request.HttpMethod); 1242// request.RawUrl, request.HttpMethod);
1243 1243
1244 switch (request.HttpMethod) 1244 switch (request.HttpMethod)
1245 { 1245 {
1246 case "OPTIONS": 1246 case "OPTIONS":
@@ -1256,7 +1256,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1256 private void HandleContentVerbs(OSHttpRequest request, OSHttpResponse response) 1256 private void HandleContentVerbs(OSHttpRequest request, OSHttpResponse response)
1257 { 1257 {
1258// m_log.DebugFormat("[BASE HTTP SERVER]: HandleContentVerbs for request to {0}", request.RawUrl); 1258// m_log.DebugFormat("[BASE HTTP SERVER]: HandleContentVerbs for request to {0}", request.RawUrl);
1259 1259
1260 // This is a test. There's a workable alternative.. as this way sucks. 1260 // This is a test. There's a workable alternative.. as this way sucks.
1261 // We'd like to put this into a text file parhaps that's easily editable. 1261 // We'd like to put this into a text file parhaps that's easily editable.
1262 // 1262 //
@@ -1391,7 +1391,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1391 1391
1392// m_log.DebugFormat( 1392// m_log.DebugFormat(
1393// "[BASE HTTP HANDLER]: TryGetHTTPHandlerPathBased() looking for HTTP handler to match {0}", searchquery); 1393// "[BASE HTTP HANDLER]: TryGetHTTPHandlerPathBased() looking for HTTP handler to match {0}", searchquery);
1394 1394
1395 lock (m_HTTPHandlers) 1395 lock (m_HTTPHandlers)
1396 { 1396 {
1397 foreach (string pattern in m_HTTPHandlers.Keys) 1397 foreach (string pattern in m_HTTPHandlers.Keys)
@@ -1452,7 +1452,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1452 1452
1453 //Even though only one other part of the entire code uses HTTPHandlers, we shouldn't expect this 1453 //Even though only one other part of the entire code uses HTTPHandlers, we shouldn't expect this
1454 //and should check for NullReferenceExceptions 1454 //and should check for NullReferenceExceptions
1455 1455
1456 if (string.IsNullOrEmpty(contentType)) 1456 if (string.IsNullOrEmpty(contentType))
1457 { 1457 {
1458 contentType = "text/html"; 1458 contentType = "text/html";
@@ -1472,8 +1472,8 @@ namespace OpenSim.Framework.Servers.HttpServer
1472 1472
1473 byte[] buffer; 1473 byte[] buffer;
1474 1474
1475 if (!(contentType.Contains("image") 1475 if (!(contentType.Contains("image")
1476 || contentType.Contains("x-shockwave-flash") 1476 || contentType.Contains("x-shockwave-flash")
1477 || contentType.Contains("application/x-oar"))) 1477 || contentType.Contains("application/x-oar")))
1478 { 1478 {
1479 // Text 1479 // Text
@@ -1504,7 +1504,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1504 { 1504 {
1505 response.OutputStream.Flush(); 1505 response.OutputStream.Flush();
1506 response.Send(); 1506 response.Send();
1507 1507
1508 //if (!response.KeepAlive && response.ReuseContext) 1508 //if (!response.KeepAlive && response.ReuseContext)
1509 // response.FreeContext(); 1509 // response.FreeContext();
1510 } 1510 }
@@ -1611,11 +1611,11 @@ namespace OpenSim.Framework.Servers.HttpServer
1611 m_httpListener2 = CoolHTTPListener.Create(m_listenIPAddress, (int)m_port); 1611 m_httpListener2 = CoolHTTPListener.Create(m_listenIPAddress, (int)m_port);
1612 m_httpListener2.ExceptionThrown += httpServerException; 1612 m_httpListener2.ExceptionThrown += httpServerException;
1613 m_httpListener2.LogWriter = httpserverlog; 1613 m_httpListener2.LogWriter = httpserverlog;
1614 1614
1615 // Uncomment this line in addition to those in HttpServerLogWriter 1615 // Uncomment this line in addition to those in HttpServerLogWriter
1616 // if you want more detailed trace information from the HttpServer 1616 // if you want more detailed trace information from the HttpServer
1617 //m_httpListener2.UseTraceLogs = true; 1617 //m_httpListener2.UseTraceLogs = true;
1618 1618
1619 //m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor; 1619 //m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor;
1620 } 1620 }
1621 else 1621 else
@@ -1643,8 +1643,8 @@ namespace OpenSim.Framework.Servers.HttpServer
1643 { 1643 {
1644 m_log.Error("[BASE HTTP SERVER]: Error - " + e.Message); 1644 m_log.Error("[BASE HTTP SERVER]: Error - " + e.Message);
1645 m_log.Error("[BASE HTTP SERVER]: Tip: Do you have permission to listen on port " + m_port + ", " + m_sslport + "?"); 1645 m_log.Error("[BASE HTTP SERVER]: Tip: Do you have permission to listen on port " + m_port + ", " + m_sslport + "?");
1646 1646
1647 // We want this exception to halt the entire server since in current configurations we aren't too 1647 // We want this exception to halt the entire server since in current configurations we aren't too
1648 // useful without inbound HTTP. 1648 // useful without inbound HTTP.
1649 throw e; 1649 throw e;
1650 } 1650 }
@@ -1656,7 +1656,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1656 { 1656 {
1657 case SocketError.NotSocket: 1657 case SocketError.NotSocket:
1658 NotSocketErrors++; 1658 NotSocketErrors++;
1659 1659
1660 break; 1660 break;
1661 } 1661 }
1662 } 1662 }
@@ -1686,12 +1686,11 @@ namespace OpenSim.Framework.Servers.HttpServer
1686 m_httpListener2.LogWriter = null; 1686 m_httpListener2.LogWriter = null;
1687 m_httpListener2.RequestReceived -= OnRequest; 1687 m_httpListener2.RequestReceived -= OnRequest;
1688 m_httpListener2.Stop(); 1688 m_httpListener2.Stop();
1689 } 1689 }
1690 catch (NullReferenceException) 1690 catch (NullReferenceException)
1691 { 1691 {
1692 m_log.Warn("[BASE HTTP SERVER]: Null Reference when stopping HttpServer."); 1692 m_log.Warn("[BASE HTTP SERVER]: Null Reference when stopping HttpServer.");
1693 } 1693 }
1694
1695 } 1694 }
1696 1695
1697 public void RemoveStreamHandler(string httpMethod, string path) 1696 public void RemoveStreamHandler(string httpMethod, string path)
@@ -1712,7 +1711,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1712 m_HTTPHandlers.Remove(path); 1711 m_HTTPHandlers.Remove(path);
1713 return; 1712 return;
1714 } 1713 }
1715 1714
1716 m_HTTPHandlers.Remove(GetHandlerKey(httpMethod, path)); 1715 m_HTTPHandlers.Remove(GetHandlerKey(httpMethod, path));
1717 } 1716 }
1718 } 1717 }
@@ -1728,7 +1727,6 @@ namespace OpenSim.Framework.Servers.HttpServer
1728 } 1727 }
1729 1728
1730 RemoveHTTPHandler(httpMethod, path); 1729 RemoveHTTPHandler(httpMethod, path);
1731
1732 } 1730 }
1733 1731
1734 public bool RemoveAgentHandler(string agent, IHttpAgentHandler handler) 1732 public bool RemoveAgentHandler(string agent, IHttpAgentHandler handler)
@@ -1759,7 +1757,6 @@ namespace OpenSim.Framework.Servers.HttpServer
1759 } 1757 }
1760 } 1758 }
1761 1759
1762
1763 public bool RemoveLLSDHandler(string path, LLSDMethod handler) 1760 public bool RemoveLLSDHandler(string path, LLSDMethod handler)
1764 { 1761 {
1765 try 1762 try
@@ -1833,7 +1830,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1833 oresp = osresp; 1830 oresp = osresp;
1834 } 1831 }
1835 } 1832 }
1836 1833
1837 /// <summary> 1834 /// <summary>
1838 /// Relays HttpServer log messages to our own logging mechanism. 1835 /// Relays HttpServer log messages to our own logging mechanism.
1839 /// </summary> 1836 /// </summary>
@@ -1852,7 +1849,7 @@ namespace OpenSim.Framework.Servers.HttpServer
1852 { 1849 {
1853 case LogPrio.Trace: 1850 case LogPrio.Trace:
1854 m_log.DebugFormat("[{0}]: {1}", source, message); 1851 m_log.DebugFormat("[{0}]: {1}", source, message);
1855 break; 1852 break;
1856 case LogPrio.Debug: 1853 case LogPrio.Debug:
1857 m_log.DebugFormat("[{0}]: {1}", source, message); 1854 m_log.DebugFormat("[{0}]: {1}", source, message);
1858 break; 1855 break;
@@ -1872,8 +1869,8 @@ namespace OpenSim.Framework.Servers.HttpServer
1872 break; 1869 break;
1873 } 1870 }
1874 */ 1871 */
1875 1872
1876 return; 1873 return;
1877 } 1874 }
1878 } 1875 }
1879} \ No newline at end of file 1876}