diff -r 69ed936deb0f Lib/http/server.py --- a/Lib/http/server.py Thu May 03 03:36:40 2012 +0200 +++ b/Lib/http/server.py Thu May 03 09:37:54 2012 +0200 @@ -1137,20 +1137,38 @@ nbytes = int(length) except (TypeError, ValueError): nbytes = 0 + stdin = subprocess.PIPE + data = None + if self.command.lower() == "post" and nbytes > 0: + # try to read all bytes in one read + data = self.rfile.read(nbytes) + if len(data) 0: - data = self.rfile.read(nbytes) - else: - data = None - # throw away additional data [see bug #427345] - while select.select([self.rfile._sock], [], [], 0)[0]: - if not self.rfile._sock.recv(1): - break stdout, stderr = p.communicate(data) self.wfile.write(stdout) if stderr: