Backport of 83120 (#9032)

XML-RPC client: Transport.request() retries on EPIPE error

The EPIPE error occurs when the server closes the socket and the client sends a
"big" XML-RPC request (I don't know exactly the size threshold).

request() just have to ignore the error because single_request() closes the
socket on error, and so the next call to single_request() will open a new
socket.

Remove also a comment in the HTTP client because it's now wrong: see r70643 and
issue #5542.
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py
index c7971cc..b6aed62 100644
--- a/Lib/xmlrpclib.py
+++ b/Lib/xmlrpclib.py
@@ -1263,7 +1263,7 @@
             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 22aa5b8..9159137 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -18,6 +18,10 @@
 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