diff --git a/websocket-sharp/Net/HttpListenerContext.cs b/websocket-sharp/Net/HttpListenerContext.cs index 638078d4..fad373e4 100644 --- a/websocket-sharp/Net/HttpListenerContext.cs +++ b/websocket-sharp/Net/HttpListenerContext.cs @@ -39,6 +39,7 @@ using System; using System.Security.Principal; +using System.Text; using WebSocketSharp.Net.WebSockets; namespace WebSocketSharp.Net @@ -200,6 +201,34 @@ namespace WebSocketSharp.Net return _listener.RegisterContext (this); } + internal void SendError () + { + try { + _response.StatusCode = _errorStatus; + _response.ContentType = "text/html"; + + var content = new StringBuilder (64); + content.AppendFormat ( + "

{0} {1}", _errorStatus, _response.StatusDescription + ); + + if (_error != null && _error.Length > 0) + content.AppendFormat (" ({0})

", _error); + else + content.Append (""); + + var enc = Encoding.UTF8; + var entity = enc.GetBytes (content.ToString ()); + _response.ContentEncoding = enc; + _response.ContentLength64 = entity.LongLength; + + _response.Close (entity, true); + } + catch { + _connection.Close (true); + } + } + internal void Unregister () { _listener.UnregisterContext (this);