diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py index c7971cc4cfb..b6aed62e3b4 100644 --- a/Lib/xmlrpclib.py +++ b/Lib/xmlrpclib.py @@ -1263,7 +1263,7 @@ class Transport: try: return self.single_request(host, handler, request_body, verbose) except socket.error, e: - if i or e.errno not in (errno.ECONNRESET, errno.ECONNABORTED): + if i or e.errno not in (errno.ECONNRESET, errno.ECONNABORTED, errno.EPIPE): raise except httplib.BadStatusLine: #close after we sent request if i: diff --git a/Misc/NEWS b/Misc/NEWS index 22aa5b88df2..915913743e4 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -18,6 +18,10 @@ Core and Builtins Library ------- +- Issue #9032: XML-RPC client retries the request on EPIPE error. The EPIPE + error occurs when the server closes the socket and the client sends a big + XML-RPC request. + - Issue #5542: Remove special logic that closes HTTPConnection socket on EPIPE. - Issue #4629: getopt raises an error if an argument ends with = whereas getopt