cpython: 6e3e252cf047 (original) (raw)

Mercurial > cpython

changeset 94673:6e3e252cf047

merge 3.4 (#23410) [#23410]

Benjamin Peterson benjamin@python.org
date Tue, 17 Feb 2015 21:13:30 -0500
parents 9a55a2a1dc6f(current diff)f9ff2a5bbbe2(diff)
children 4f7c5349e801 477d217ba4e8
files Doc/library/http.server.rst Lib/http/server.py
diffstat 3 files changed, 61 insertions(+), 10 deletions(-)[+] [-] Doc/library/http.server.rst 12 Lib/http/server.py 20 Lib/test/test_httpservers.py 39

line wrap: on

line diff

--- a/Doc/library/http.server.rst +++ b/Doc/library/http.server.rst @@ -64,6 +64,18 @@ of which this module provides three diff Contains the server instance.

+

.. attribute:: command

--- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -275,7 +275,7 @@ class BaseHTTPRequestHandler(socketserve """ self.command = None # set in case of error on the first line self.request_version = version = self.default_request_version

@@ -305,7 +305,7 @@ class BaseHTTPRequestHandler(socketserve "Bad request version (%r)" % version) return False if version_number >= (1, 1) and self.protocol_version >= "HTTP/1.1":

@@ -313,7 +313,7 @@ class BaseHTTPRequestHandler(socketserve return False elif len(words) == 2: command, path = words

@@ -340,10 +340,10 @@ class BaseHTTPRequestHandler(socketserve conntype = self.headers.get('Connection', "") if conntype.lower() == 'close':

@@ -388,7 +388,7 @@ class BaseHTTPRequestHandler(socketserve self.send_error(HTTPStatus.REQUEST_URI_TOO_LONG) return if not self.raw_requestline:

@@ -405,12 +405,12 @@ class BaseHTTPRequestHandler(socketserve except socket.timeout as e: #a read or a write timed out. Discard this connection self.log_error("Request timed out: %r", e)

def handle(self): """Handle multiple requests if necessary."""

self.handle_one_request() while not self.close_connection: @@ -496,9 +496,9 @@ class BaseHTTPRequestHandler(socketserve if keyword.lower() == 'connection': if value.lower() == 'close':

def end_headers(self): """Send the blank line ending the MIME headers."""

--- a/Lib/test/test_httpservers.py +++ b/Lib/test/test_httpservers.py @@ -616,6 +616,11 @@ class BaseHTTPRequestHandlerTestCase(uni self.verify_expected_headers(result[1:-1]) self.verify_get_called() self.assertEqual(result[-1], b'Data\r\n')

def test_http_1_0(self): result = self.send_typical_request(b'GET / HTTP/1.0\r\n\r\n') @@ -623,6 +628,11 @@ class BaseHTTPRequestHandlerTestCase(uni self.verify_expected_headers(result[1:-1]) self.verify_get_called() self.assertEqual(result[-1], b'Data\r\n')

def test_http_0_9(self): result = self.send_typical_request(b'GET / HTTP/0.9\r\n\r\n') @@ -636,6 +646,12 @@ class BaseHTTPRequestHandlerTestCase(uni self.verify_expected_headers(result[1:-1]) self.verify_get_called() self.assertEqual(result[-1], b'Data\r\n')

def test_with_continue_1_1(self): result = self.send_typical_request(b'GET / HTTP/1.1\r\nExpect: 100-continue\r\n\r\n') @@ -645,6 +661,12 @@ class BaseHTTPRequestHandlerTestCase(uni self.verify_expected_headers(result[2:-1]) self.verify_get_called() self.assertEqual(result[-1], b'Data\r\n')

def test_header_buffering_of_send_error(self): @@ -730,6 +752,7 @@ class BaseHTTPRequestHandlerTestCase(uni result = self.send_typical_request(b'GET ' + b'x' * 65537) self.assertEqual(result[0], b'HTTP/1.1 414 Request-URI Too Long\r\n') self.assertFalse(self.handler.get_called)

def test_header_length(self): # Issue #6791: same for headers @@ -737,6 +760,22 @@ class BaseHTTPRequestHandlerTestCase(uni b'GET / HTTP/1.1\r\nX-Foo: bar' + b'r' * 65537 + b'\r\n\r\n') self.assertEqual(result[0], b'HTTP/1.1 400 Line too long\r\n') self.assertFalse(self.handler.get_called)

+

+

+

class SimpleHTTPRequestHandlerTestCase(unittest.TestCase): """ Test url parsing """