diff --git a/mercurial/httpclient/__init__.py b/mercurial/httpclient/__init__.py
index 60e060f4faa9941b65d2ad406d119dd92c5f13e7_bWVyY3VyaWFsL2h0dHBjbGllbnQvX19pbml0X18ucHk=..42fcb2f7787db7bb007f2e26ea804d35411b7c55_bWVyY3VyaWFsL2h0dHBjbGllbnQvX19pbml0X18ucHk= 100644
--- a/mercurial/httpclient/__init__.py
+++ b/mercurial/httpclient/__init__.py
@@ -622,6 +622,8 @@
                         # 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
index 60e060f4faa9941b65d2ad406d119dd92c5f13e7_bWVyY3VyaWFsL2h0dHBjbGllbnQvc29ja2V0dXRpbC5weQ==..42fcb2f7787db7bb007f2e26ea804d35411b7c55_bWVyY3VyaWFsL2h0dHBjbGllbnQvc29ja2V0dXRpbC5weQ== 100644
--- a/mercurial/httpclient/socketutil.py
+++ b/mercurial/httpclient/socketutil.py
@@ -106,7 +106,7 @@
                     else:
                         raise x
 
-    _PROTOCOL_SSLv23 = 2
+    _PROTOCOL_SSLv3 = 1
 
     CERT_NONE = 0
     CERT_OPTIONAL = 1
@@ -118,7 +118,7 @@
     # 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."""