fix for release blocker 3910, 2.6 regression in socket.ssl method

This commit is contained in:
Bill Janssen 2008-09-29 18:56:38 +00:00
parent 9350234683
commit eb257ac97d
2 changed files with 28 additions and 3 deletions

View file

@ -434,7 +434,18 @@ def sslwrap_simple (sock, keyfile=None, certfile=None):
for compability with Python 2.5 and earlier. Will disappear in
Python 3.0."""
ssl_sock = _ssl.sslwrap(sock._sock, 0, keyfile, certfile, CERT_NONE,
if hasattr(sock, "_sock"):
sock = sock._sock
ssl_sock = _ssl.sslwrap(sock, 0, keyfile, certfile, CERT_NONE,
PROTOCOL_SSLv23, None)
try:
sock.getpeername()
except:
# no, no connection yet
pass
else:
# yes, do the handshake
ssl_sock.do_handshake()
return ssl_sock

View file

@ -34,6 +34,21 @@ def handle_error(prefix):
if test_support.verbose:
sys.stdout.write(prefix + exc_format)
def testSimpleSSLwrap(self):
try:
ssl.sslwrap_simple(socket.socket(socket.AF_INET))
except IOError, e:
if e.errno == 32: # broken pipe when ssl_sock.do_handshake(), this test doesn't care about that
pass
else:
raise
try:
ssl.sslwrap_simple(socket.socket(socket.AF_INET)._sock)
except IOError, e:
if e.errno == 32: # broken pipe when ssl_sock.do_handshake(), this test doesn't care about that
pass
else:
raise
class BasicTests(unittest.TestCase):
@ -58,7 +73,6 @@ class BasicTests(unittest.TestCase):
finally:
s.close()
def testCrucialConstants(self):
ssl.PROTOCOL_SSLv2
ssl.PROTOCOL_SSLv23