From 0217c6d3f4e5d041b67aec60bbb32443e0f549d7 Mon Sep 17 00:00:00 2001 From: Jocelyn Fiat Date: Tue, 4 Oct 2016 13:00:38 +0200 Subject: [PATCH] First attempt to response with bad request message when bad request is detected. --- .../lib/httpd/httpd_request_handler_i.e | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/library/server/ewsgi/connectors/standalone/lib/httpd/httpd_request_handler_i.e b/library/server/ewsgi/connectors/standalone/lib/httpd/httpd_request_handler_i.e index 439d9122..d401aa4a 100644 --- a/library/server/ewsgi/connectors/standalone/lib/httpd/httpd_request_handler_i.e +++ b/library/server/ewsgi/connectors/standalone/lib/httpd/httpd_request_handler_i.e @@ -287,6 +287,8 @@ feature -- Execution log (request_header + "%NWARNING: invalid HTTP incoming request", warning_level) end end + process_bad_request (l_socket) + is_persistent_connection_requested := False else if is_verbose then log (request_header, information_level) @@ -307,7 +309,7 @@ feature -- Execution feature -- Request processing process_request (a_socket: HTTPD_STREAM_SOCKET) - -- Process request ... + -- Process request on socket `a_socket'. require no_error: not has_error a_uri_attached: uri /= Void @@ -318,6 +320,33 @@ feature -- Request processing deferred end + process_bad_request (a_socket: HTTPD_STREAM_SOCKET) + -- Process bad request catched on `a_socket'. + require + has_error: has_error + a_socket_attached: a_socket /= Void + local + h: STRING + s: STRING + do + s := "{ + + +400 Bad Request + +

Bad Request

+ + }" + create h.make (1_024) + h.append ("HTTP/1.1 400 Bad Request%R%N") + h.append ("Content-Length: " + s.count.out + "%R%N") + h.append ("Connection: close%R%N") + h.append ("Content-Type: text/html; charset=iso-8859-1%R%N") + h.append ("%R%N") + a_socket.put_string (h) + a_socket.put_string (s) + end + feature -- Parsing analyze_request_message (a_socket: HTTPD_STREAM_SOCKET)