summaryrefslogtreecommitdiffstats
path: root/Lib/BaseHTTPServer.py
diff options
context:
space:
mode:
authorKristján Valur Jónsson <kristjan@ccpgames.com>2009-06-28 21:04:17 (GMT)
committerKristján Valur Jónsson <kristjan@ccpgames.com>2009-06-28 21:04:17 (GMT)
commite007860b8b3609ce0bc62b1780efaa06241520bd (patch)
tree687961d29bff1d936ed949cf591bbe8285d9e54d /Lib/BaseHTTPServer.py
parent552e7a7e2f526fa0637a3e14f47354c567dfe26e (diff)
downloadcpython-e007860b8b3609ce0bc62b1780efaa06241520bd.zip
cpython-e007860b8b3609ce0bc62b1780efaa06241520bd.tar.gz
cpython-e007860b8b3609ce0bc62b1780efaa06241520bd.tar.bz2
http://bugs.python.org/issue6267
Cumulative patch to http and xmlrpc
Diffstat (limited to 'Lib/BaseHTTPServer.py')
-rw-r--r--Lib/BaseHTTPServer.py28
1 files changed, 18 insertions, 10 deletions
diff --git a/Lib/BaseHTTPServer.py b/Lib/BaseHTTPServer.py
index acd8394..9bb3ba4 100644
--- a/Lib/BaseHTTPServer.py
+++ b/Lib/BaseHTTPServer.py
@@ -309,18 +309,26 @@ class BaseHTTPRequestHandler(SocketServer.StreamRequestHandler):
commands such as GET and POST.
"""
- self.raw_requestline = self.rfile.readline()
- if not self.raw_requestline:
+ try:
+ self.raw_requestline = self.rfile.readline()
+ if not self.raw_requestline:
+ self.close_connection = 1
+ return
+ if not self.parse_request():
+ # An error code has been sent, just exit
+ return
+ mname = 'do_' + self.command
+ if not hasattr(self, mname):
+ self.send_error(501, "Unsupported method (%r)" % self.command)
+ return
+ method = getattr(self, mname)
+ method()
+ self.wfile.flush() #actually send the response if not already done.
+ except socket.timeout, e:
+ #a read or a write timed out. Discard this connection
+ self.log_error("Request timed out: %r", e)
self.close_connection = 1
return
- if not self.parse_request(): # An error code has been sent, just exit
- return
- mname = 'do_' + self.command
- if not hasattr(self, mname):
- self.send_error(501, "Unsupported method (%r)" % self.command)
- return
- method = getattr(self, mname)
- method()
def handle(self):
"""Handle multiple requests if necessary."""