diff --git a/eventlet/httpd.py b/eventlet/httpd.py index d0609b3..7d73756 100644 --- a/eventlet/httpd.py +++ b/eventlet/httpd.py @@ -415,8 +415,7 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler): self.socket = self.request = self.rfile = self.wfile = request self.client_address = client_address self.server = server - self._code = 200 - self._message = 'OK' + self.set_response_code(None, 200, None) self.protocol_version = server.max_http_version def set_response_code(self, request, code, message): @@ -482,7 +481,7 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler): self.close_connection = True continue - self._code = 200 + self.set_response_code(None, 200, None) request = Request(self, self.command, self.path, self.headers) request.set_header('Server', self.version_string()) request.set_header('Date', self.date_time_string()) diff --git a/eventlet/httpd_test.py b/eventlet/httpd_test.py index fe52e70..e7e0fbc 100644 --- a/eventlet/httpd_test.py +++ b/eventlet/httpd_test.py @@ -42,6 +42,10 @@ from eventlet import tests class Site(object): def handle_request(self, req): + path = req.path_segments() + if len(path) > 0 and path[0] == "notexist": + req.response(404, body='not found') + return req.write('hello world') def adapt(self, obj, req): @@ -185,7 +189,18 @@ class TestHttpd(tests.TestCase): self.assertEqual(body, 'a is a, body is a=a') sock.close() - + def test_008_correctresponse(self): + sock = api.connect_tcp( + ('127.0.0.1', 12346)) + + sock.write('GET / HTTP/1.1\r\nHost: localhost\r\n\r\n') + response_line_200,_,_ = read_http(sock) + sock.write('GET /notexist HTTP/1.1\r\nHost: localhost\r\n\r\n') + response_line_404,_,_ = read_http(sock) + sock.write('GET / HTTP/1.1\r\nHost: localhost\r\n\r\n') + response_line_test,_,_ = read_http(sock) + self.assertEqual(response_line_200,response_line_test) + sock.close() if __name__ == '__main__':