private static void asyncHTTPCallback(IAsyncResult result) { try { HttpListener listener = (HttpListener)result.AsyncState; HttpListenerContext context = listener.EndGetContext(result); string responseText = new ServerInfo(Settings.settingsStore).GetJSON(); byte[] buffer = Encoding.UTF8.GetBytes(responseText); context.Response.ContentLength64 = buffer.LongLength; context.Response.OutputStream.Write(buffer, 0, buffer.Length); context.Response.OutputStream.Close(); listener.BeginGetContext(asyncHTTPCallback, listener); } catch (Exception e) { //Ignore the EngGetContext throw while shutting down the HTTP server. if (Server.serverRunning) { DarkLog.Error("Exception while listening to HTTP server!, Exception:\n" + e); } } }
private static void asyncHTTPCallback(IAsyncResult result) { try { HttpListener listener = (HttpListener)result.AsyncState; HttpListenerContext context = listener.EndGetContext(result); string responseText = ""; bool handled = false; if (context.Request.Url.PathAndQuery.StartsWith("/modcontrol")) { if (!File.Exists(modFile)) { GenerateNewModFile(); } responseText = File.ReadAllText(modFile); handled = true; } if (!handled) { responseText = new ServerInfo(Settings.settingsStore).GetJSON(); } byte[] buffer = Encoding.UTF8.GetBytes(responseText); context.Response.ContentLength64 = buffer.LongLength; context.Response.OutputStream.Write(buffer, 0, buffer.Length); context.Response.OutputStream.Close(); listener.BeginGetContext(asyncHTTPCallback, listener); } catch (Exception e) { //Ignore the EngGetContext throw while shutting down the HTTP server. if (Server.serverRunning) { DarkLog.Error("Exception while listening to HTTP server!, Exception:\n" + e); Thread.Sleep(1000); httpListener.BeginGetContext(asyncHTTPCallback, httpListener); } } }