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.
This commit is contained in:
Victor Stinner 2010-07-24 02:51:49 +00:00
parent 2c6aee9096
commit 8b0d84e3d5
2 changed files with 5 additions and 1 deletions

View file

@ -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: