diff -r 624316fbb39d Lib/http/client.py --- a/Lib/http/client.py Tue Dec 22 08:22:05 2015 +0200 +++ b/Lib/http/client.py Tue Dec 22 22:58:22 2015 +0000 @@ -75,6 +75,7 @@ import os import re import socket +import select import collections from urllib.parse import urlsplit @@ -928,6 +929,11 @@ break if encode: datablock = datablock.encode("iso-8859-1") + (rlist, wlist, xlist) = select.select((self.sock,), (), (), 0) + if rlist: + # server gave response before we finished sending. Break + # and interpret the response + break self.sock.sendall(datablock) return try: diff -r 624316fbb39d Lib/test/test_httplib.py --- a/Lib/test/test_httplib.py Tue Dec 22 08:22:05 2015 +0200 +++ b/Lib/test/test_httplib.py Tue Dec 22 22:58:22 2015 +0000 @@ -74,6 +74,9 @@ def setsockopt(self, level, optname, value): pass + def fileno(self): + return 0 + class EPipeSocket(FakeSocket): def __init__(self, text, pipe_trigger):