summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey Petrov <andrey.petrov@shazow.net>2013-10-01 13:12:16 -0700
committerAndrey Petrov <andrey.petrov@shazow.net>2013-10-01 13:12:16 -0700
commitc97e471122ac661dcd6ec9b4ce0e8c254814173c (patch)
tree14b60822c9051011ef8f8eb5abf698c84631fb34
parent5062ac6e6b9c056031b90cf1a9b9bdbcdb5b11ee (diff)
parenta49bec58fa5f7aca76d1d0b2f1975eb094648eab (diff)
downloadurllib3-c97e471122ac661dcd6ec9b4ce0e8c254814173c.tar.gz
Merge pull request #250 from t-8ch/pyopenssl_handshake_loop
pyopenssl: wait for data before handshake retry
-rw-r--r--urllib3/contrib/pyopenssl.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/urllib3/contrib/pyopenssl.py b/urllib3/contrib/pyopenssl.py
index d43bcd60..91bc2fa4 100644
--- a/urllib3/contrib/pyopenssl.py
+++ b/urllib3/contrib/pyopenssl.py
@@ -26,6 +26,7 @@ import OpenSSL.SSL
from pyasn1.codec.der import decoder as der_decoder
from socket import _fileobject
import ssl
+import select
from cStringIO import StringIO
from .. import connectionpool
@@ -336,6 +337,7 @@ def ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None,
try:
cnx.do_handshake()
except OpenSSL.SSL.WantReadError:
+ select.select([sock], [], [])
continue
except OpenSSL.SSL.Error as e:
raise ssl.SSLError('bad handshake', e)