diff -r f5cde9c5ef60 Lib/test/test_wsgiref.py --- a/Lib/test/test_wsgiref.py Sat Sep 13 01:45:50 2014 -0400 +++ b/Lib/test/test_wsgiref.py Mon Sep 15 14:00:33 2014 -0400 @@ -118,6 +118,11 @@ out, err = run_amock() self.check_hello(out) + def test_request_length(self): + out, err = run_amock(data=b'GET ' + (b'x' * 65537) + b' HTTP/1.0\n\n') + self.assertEqual(out.splitlines()[0], + b'HTTP/1.0 414 Request-URI Too Long') + def test_validated_hello(self): out, err = run_amock(validator(hello_app)) # the middleware doesn't support len(), so content-length isn't there diff -r f5cde9c5ef60 Lib/wsgiref/simple_server.py --- a/Lib/wsgiref/simple_server.py Sat Sep 13 01:45:50 2014 -0400 +++ b/Lib/wsgiref/simple_server.py Mon Sep 15 14:00:33 2014 -0400 @@ -115,7 +115,14 @@ def handle(self): """Handle a single HTTP request""" - self.raw_requestline = self.rfile.readline() + self.raw_requestline = self.rfile.readline(65537) + if len(self.raw_requestline) > 65536: + self.requestline = '' + self.request_version = '' + self.command = '' + self.send_error(414) + return + if not self.parse_request(): # An error code has been sent, just exit return