diff options
author | Teravus Ovares | 2009-07-21 06:47:29 +0000 |
---|---|---|
committer | Teravus Ovares | 2009-07-21 06:47:29 +0000 |
commit | c243ae43f23be20ec3388ed30e8b7b806ad2a2a7 (patch) | |
tree | 2c38ab90f6c81e08ada7ef4f4dbad6da77afd75a /OpenSim/Framework | |
parent | * nothing in this commit, re-triggering panda.. which crashed while testing. (diff) | |
download | opensim-SC-c243ae43f23be20ec3388ed30e8b7b806ad2a2a7.zip opensim-SC-c243ae43f23be20ec3388ed30e8b7b806ad2a2a7.tar.gz opensim-SC-c243ae43f23be20ec3388ed30e8b7b806ad2a2a7.tar.bz2 opensim-SC-c243ae43f23be20ec3388ed30e8b7b806ad2a2a7.tar.xz |
* Updated C# WebServer to the latest available source download (r19869) and applied a few mods from the old version (now up on opensim-libs (VS 3.5 project).
* Made various changes to BaseHttpServer to accommodate the new interfaces.
* This version has been significantly re-architected and may fail in unusual and insidious ways.
* Please pay attention to any errors you get and post a Mantis if you can reproduce an issue with the HTTPServer. I'm including the pdb and having the http server compiled in debug for a few weeks so that when an error occurs, it'll print the pertenant data.
* Once again, this is the full C# WebServer, not the lite branch that is included in LibOMV (we need SSL!)
Diffstat (limited to 'OpenSim/Framework')
-rw-r--r-- | OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | 19 | ||||
-rw-r--r-- | OpenSim/Framework/Servers/Tests/OSHttpTests.cs | 31 |
2 files changed, 45 insertions, 5 deletions
diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index ef61200..4532e76 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs | |||
@@ -226,6 +226,15 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
226 | return true; | 226 | return true; |
227 | } | 227 | } |
228 | 228 | ||
229 | private void OnRequest(object source, RequestEventArgs args) | ||
230 | { | ||
231 | IHttpClientContext context = (IHttpClientContext)source; | ||
232 | IHttpRequest request = args.Request; | ||
233 | |||
234 | OnHandleRequestIOThread(context,request); | ||
235 | |||
236 | } | ||
237 | |||
229 | public void OnHandleRequestIOThread(IHttpClientContext context, IHttpRequest request) | 238 | public void OnHandleRequestIOThread(IHttpClientContext context, IHttpRequest request) |
230 | { | 239 | { |
231 | OSHttpRequest req = new OSHttpRequest(context, request); | 240 | OSHttpRequest req = new OSHttpRequest(context, request); |
@@ -1406,7 +1415,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
1406 | { | 1415 | { |
1407 | //m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); | 1416 | //m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); |
1408 | //m_httpListener.Prefixes.Add("http://10.1.1.5:" + m_port + "/"); | 1417 | //m_httpListener.Prefixes.Add("http://10.1.1.5:" + m_port + "/"); |
1409 | m_httpListener2 = new CoolHTTPListener(m_listenIPAddress, (int)m_port); | 1418 | m_httpListener2 = CoolHTTPListener.Create(m_listenIPAddress, (int)m_port); |
1410 | m_httpListener2.ExceptionThrown += httpServerException; | 1419 | m_httpListener2.ExceptionThrown += httpServerException; |
1411 | m_httpListener2.LogWriter = httpserverlog; | 1420 | m_httpListener2.LogWriter = httpserverlog; |
1412 | 1421 | ||
@@ -1414,7 +1423,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
1414 | // if you want more detailed trace information from the HttpServer | 1423 | // if you want more detailed trace information from the HttpServer |
1415 | //m_httpListener2.UseTraceLogs = true; | 1424 | //m_httpListener2.UseTraceLogs = true; |
1416 | 1425 | ||
1417 | m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor; | 1426 | //m_httpListener2.DisconnectHandler = httpServerDisconnectMonitor; |
1418 | } | 1427 | } |
1419 | else | 1428 | else |
1420 | { | 1429 | { |
@@ -1422,7 +1431,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
1422 | //m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); | 1431 | //m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); |
1423 | } | 1432 | } |
1424 | 1433 | ||
1425 | m_httpListener2.RequestHandler += OnHandleRequestIOThread; | 1434 | m_httpListener2.RequestReceived += OnRequest; |
1426 | //m_httpListener.Start(); | 1435 | //m_httpListener.Start(); |
1427 | m_httpListener2.Start(64); | 1436 | m_httpListener2.Start(64); |
1428 | HTTPDRunning = true; | 1437 | HTTPDRunning = true; |
@@ -1474,10 +1483,10 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
1474 | { | 1483 | { |
1475 | HTTPDRunning = false; | 1484 | HTTPDRunning = false; |
1476 | m_httpListener2.ExceptionThrown -= httpServerException; | 1485 | m_httpListener2.ExceptionThrown -= httpServerException; |
1477 | m_httpListener2.DisconnectHandler = null; | 1486 | //m_httpListener2.DisconnectHandler = null; |
1478 | 1487 | ||
1479 | m_httpListener2.LogWriter = null; | 1488 | m_httpListener2.LogWriter = null; |
1480 | m_httpListener2.RequestHandler -= OnHandleRequestIOThread; | 1489 | m_httpListener2.RequestReceived -= OnRequest; |
1481 | 1490 | ||
1482 | m_httpListener2.Stop(); | 1491 | m_httpListener2.Stop(); |
1483 | } | 1492 | } |
diff --git a/OpenSim/Framework/Servers/Tests/OSHttpTests.cs b/OpenSim/Framework/Servers/Tests/OSHttpTests.cs index 48db44d..f7f0afa 100644 --- a/OpenSim/Framework/Servers/Tests/OSHttpTests.cs +++ b/OpenSim/Framework/Servers/Tests/OSHttpTests.cs | |||
@@ -46,6 +46,10 @@ namespace OpenSim.Framework.Servers.Tests | |||
46 | public class TestHttpClientContext: IHttpClientContext | 46 | public class TestHttpClientContext: IHttpClientContext |
47 | { | 47 | { |
48 | private bool _secured; | 48 | private bool _secured; |
49 | public bool IsSecured | ||
50 | { | ||
51 | get { return _secured; } | ||
52 | } | ||
49 | public bool Secured | 53 | public bool Secured |
50 | { | 54 | { |
51 | get { return _secured; } | 55 | get { return _secured; } |
@@ -62,10 +66,19 @@ namespace OpenSim.Framework.Servers.Tests | |||
62 | public void Respond(string body) {} | 66 | public void Respond(string body) {} |
63 | public void Send(byte[] buffer) {} | 67 | public void Send(byte[] buffer) {} |
64 | public void Send(byte[] buffer, int offset, int size) {} | 68 | public void Send(byte[] buffer, int offset, int size) {} |
69 | public void Respond(string httpVersion, HttpStatusCode statusCode, string reason, string body, string contentType) {} | ||
70 | |||
71 | public event EventHandler<DisconnectedEventArgs> Disconnected = delegate { }; | ||
72 | /// <summary> | ||
73 | /// A request have been received in the context. | ||
74 | /// </summary> | ||
75 | public event EventHandler<RequestEventArgs> RequestReceived = delegate { }; | ||
76 | |||
65 | } | 77 | } |
66 | 78 | ||
67 | public class TestHttpRequest: IHttpRequest | 79 | public class TestHttpRequest: IHttpRequest |
68 | { | 80 | { |
81 | private string _uriPath; | ||
69 | public bool BodyIsComplete | 82 | public bool BodyIsComplete |
70 | { | 83 | { |
71 | get { return true; } | 84 | get { return true; } |
@@ -183,6 +196,24 @@ namespace OpenSim.Framework.Servers.Tests | |||
183 | 196 | ||
184 | return clone; | 197 | return clone; |
185 | } | 198 | } |
199 | public IHttpResponse CreateResponse(IHttpClientContext context) | ||
200 | { | ||
201 | return new HttpResponse(context, this); | ||
202 | } | ||
203 | /// <summary> | ||
204 | /// Path and query (will be merged with the host header) and put in Uri | ||
205 | /// </summary> | ||
206 | /// <see cref="Uri"/> | ||
207 | public string UriPath | ||
208 | { | ||
209 | get { return _uriPath; } | ||
210 | set | ||
211 | { | ||
212 | _uriPath = value; | ||
213 | |||
214 | } | ||
215 | } | ||
216 | |||
186 | } | 217 | } |
187 | 218 | ||
188 | public class TestHttpResponse: IHttpResponse | 219 | public class TestHttpResponse: IHttpResponse |