Ben Darnell added the comment:

We found a related issue with Tornado: 
https://github.com/facebook/tornado/pull/750

We call wrap_socket with do_handshake_on_connect=False and then call 
do_handshake when the socket is ready.  If the getpeername call in wrap_socket 
fails with ENOTCONN because the connection was reset immediately after it was 
opened, then do_handshake will fail with an AttributeError (because 
self._sslobj is None).  do_handshake should fail with a clearer error (perhaps 
socket.error with ENOTCONN or ECONNABORTED?) if self._sslobj is None.

Also, Mac OS X appears to return EINVAL from getpeername in this case, instead 
of ENOTCONN.  wrap_socket should probably treat ENOTCONN and EINVAL from 
getpeername as equivalent.

----------
nosy: +Ben.Darnell

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13721>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to