[Python-checkins] r80516 - in python/branches/release31-maint: Lib/ssl.py
antoine.pitrou
python-checkins at python.org
Tue Apr 27 00:37:59 CEST 2010
Author: antoine.pitrou
Date: Tue Apr 27 00:37:59 2010
New Revision: 80516
Log:
Merged revisions 80515 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r80515 | antoine.pitrou | 2010-04-27 00:17:47 +0200 (mar., 27 avril 2010) | 4 lines
Hopefully fix sporadic Windows issue by avoiding calling getpeername()
on a freshly dup'ed socket.
........
Modified:
python/branches/release31-maint/ (props changed)
python/branches/release31-maint/Lib/ssl.py
Modified: python/branches/release31-maint/Lib/ssl.py
==============================================================================
--- python/branches/release31-maint/Lib/ssl.py (original)
+++ python/branches/release31-maint/Lib/ssl.py Tue Apr 27 00:37:59 2010
@@ -82,6 +82,7 @@
import base64 # for DER-to-PEM translation
import traceback
import errno
+import time
class SSLSocket(socket):
@@ -96,6 +97,7 @@
family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None,
suppress_ragged_eofs=True):
+ connected = False
if sock is not None:
socket.__init__(self,
family=sock.family,
@@ -103,26 +105,27 @@
proto=sock.proto,
fileno=_dup(sock.fileno()))
self.settimeout(sock.gettimeout())
+ # see if it's connected
+ try:
+ sock.getpeername()
+ except socket_error as e:
+ if e.errno != errno.ENOTCONN:
+ raise
+ else:
+ connected = True
sock.close()
elif fileno is not None:
socket.__init__(self, fileno=fileno)
else:
socket.__init__(self, family=family, type=type, proto=proto)
- self._closed = False
-
if certfile and not keyfile:
keyfile = certfile
- # see if it's connected
- try:
- socket.getpeername(self)
- except socket_error as e:
- if e.errno != errno.ENOTCONN:
- raise
- # no, no connection yet
- self._sslobj = None
- else:
- # yes, create the SSL object
+
+ self._closed = False
+ self._sslobj = None
+ if connected:
+ # create the SSL object
try:
self._sslobj = _ssl.sslwrap(self, server_side,
keyfile, certfile,
More information about the Python-checkins
mailing list