diff --git a/mercurial/httpclient/__init__.py b/mercurial/httpclient/__init__.py --- a/mercurial/httpclient/__init__.py +++ b/mercurial/httpclient/__init__.py @@ -622,6 +622,8 @@ class HTTPConnection(object): # TODO: find a way to block on ssl flushing its buffer # similar to selecting on a raw socket. continue + if e[0] == errno.EWOULDBLOCK or e[0] == errno.EAGAIN: + continue elif (e[0] not in (errno.ECONNRESET, errno.EPIPE) and not first): raise diff --git a/mercurial/httpclient/socketutil.py b/mercurial/httpclient/socketutil.py --- a/mercurial/httpclient/socketutil.py +++ b/mercurial/httpclient/socketutil.py @@ -106,7 +106,7 @@ else: else: raise x - _PROTOCOL_SSLv23 = 2 + _PROTOCOL_SSLv3 = 1 CERT_NONE = 0 CERT_OPTIONAL = 1 @@ -118,7 +118,7 @@ else: # pylint: disable=W0613,R0913 def wrap_socket(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=CERT_NONE, - ssl_version=_PROTOCOL_SSLv23, ca_certs=None, + ssl_version=_PROTOCOL_SSLv3, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True): """Backport of ssl.wrap_socket from Python 2.6."""