protected override void DataReceived(HTTPConnection sender, NetworkBuffer data) { //Console.WriteLine(Data); // Initialize a new session //HTTPConnection HTTP = (HTTPConnection)sender.ExtraObject; //string Data = System.Text.Encoding.Default.GetString(ReceivedData); byte[] msg = data.Read(); var BL = sender.Parse(msg); if (BL == 0) { if (sender.Request.Method == HTTPRequestPacket.HTTPMethod.UNKNOWN) { sender.Close(); return; } if (sender.Request.URL == "") { sender.Close(); return; } } else if (BL == -1) { data.HoldForNextWrite(msg); return; } else if (BL < 0) { data.HoldFor(msg, (uint)(msg.Length - BL)); return; } else if (BL > 0) { if (BL > maxPost) { sender.Send( "<html><body>POST method content is larger than " + maxPost + " bytes.</body></html>"); sender.Close(); } else { data.HoldFor(msg, (uint)(msg.Length + BL)); } return; } else if (BL < 0) // for security { sender.Close(); return; } if (sender.IsWebsocketRequest() & !sender.WSMode) { sender.Upgrade(); //return; } //return; try { foreach (IResource resource in Instance.Children) { if (resource is HTTPFilter) { if ((resource as HTTPFilter).Execute(sender)) { return; } } } sender.Send("Bad Request"); sender.Close(); } catch (Exception ex) { if (ex.Message != "Thread was being aborted.") { Global.Log("HTTPServer", LogType.Error, ex.ToString()); //Console.WriteLine(ex.ToString()); //EventLog.WriteEntry("HttpServer", ex.ToString(), EventLogEntryType.Error); sender.Send(Return500(ex.Message)); } } }
protected override void DataReceived(NetworkBuffer data) { byte[] msg = data.Read(); var BL = Parse(msg); if (BL == 0) { if (Request.Method == HTTPRequestPacket.HTTPMethod.UNKNOWN) { Close(); return; } if (Request.URL == "") { Close(); return; } } else if (BL == -1) { data.HoldForNextWrite(msg); return; } else if (BL < 0) { data.HoldFor(msg, (uint)(msg.Length - BL)); return; } else if (BL > 0) { if (BL > Server.MaxPost) { Send( "<html><body>POST method content is larger than " + Server.MaxPost + " bytes.</body></html>"); Close(); } else { data.HoldFor(msg, (uint)(msg.Length + BL)); } return; } else if (BL < 0) // for security { Close(); return; } if (IsWebsocketRequest(Request) & !WSMode) { Upgrade(); //return; } //return; try { if (!Server.Execute(this)) { Response.Number = HTTPResponsePacket.ResponseCode.InternalServerError; Send("Bad Request"); Close(); } } catch (Exception ex) { if (ex.Message != "Thread was being aborted.") { Global.Log("HTTPServer", LogType.Error, ex.ToString()); //Console.WriteLine(ex.ToString()); //EventLog.WriteEntry("HttpServer", ex.ToString(), EventLogEntryType.Error); Send(Error500(ex.Message)); } } }