Antoine Pitrou <pit...@free.fr> added the comment:

The intuitive explanation seems to be:
- there are some bytes available for reading on the *TCP socket*, therefore 
asyncore calls the read handler
- however, there are not enough bytes for OpenSSL to actually decrypt any data, 
which is why we get SSL_ERROR_WANT_READ when trying to read from the *SSL 
socket*

The following patch seems to fix test_ftplib; any thoughts?


Index: Lib/test/test_ftplib.py
===================================================================
--- Lib/test/test_ftplib.py     (révision 79224)
+++ Lib/test/test_ftplib.py     (copie de travail)
@@ -293,7 +293,9 @@
             try:
                 return super(SSLConnection, self).send(data)
             except ssl.SSLError, err:
-                if err.args[0] in (ssl.SSL_ERROR_EOF, 
ssl.SSL_ERROR_ZERO_RETURN):
+                if err.args[0] in (ssl.SSL_ERROR_EOF, 
ssl.SSL_ERROR_ZERO_RETURN,
+                                   ssl.SSL_ERROR_WANT_READ,
+                                   ssl.SSL_ERROR_WANT_WRITE):
                     return 0
                 raise
 
@@ -301,6 +303,9 @@
             try:
                 return super(SSLConnection, self).recv(buffer_size)
             except ssl.SSLError, err:
+                if err.args[0] in (ssl.SSL_ERROR_WANT_READ,
+                                   ssl.SSL_ERROR_WANT_WRITE):
+                    return ''
                 if err.args[0] in (ssl.SSL_ERROR_EOF, 
ssl.SSL_ERROR_ZERO_RETURN):
                     self.handle_close()
                     return ''

----------

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

Reply via email to