[issue10084] SSL support for asyncore

Antoine Pitrou report at bugs.python.org
Sun Feb 13 00:54:03 CET 2011


Antoine Pitrou <pitrou at free.fr> added the comment:

First comments:

- secure_connection() should be named ssl_something() like other
methods. ssl_start() perhaps?

- in ssl_shutdown():
+                elif err.args[0] == ssl.SSL_ERROR_SSL:
+                    pass

SSL_ERROR_SSL doesn't exist.  Perhaps you mean ssl.SSL_ERROR_EOF?

- in send(), you should handle SSL_ERROR_WANT_READ and
SSL_ERROR_WANT_WRITE as in recv(). Also:
+                if err.args[0] in (ssl.SSL_ERROR_EOF, ssl.SSL_ERROR_ZERO_RETURN):
+                    return 0

lacks a self.handle_close()?

- in recv(), you have "return ''" where it should be "return b''"

- in test_ssl_established(), I think it would be nice if you used e.g.
getpeercert() to check that we really are in SSL mode. Also, you could
make certificate checking mandatory using e.g.:

    ssl_context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
    ssl_context.verify_mode = ssl.CERT_REQUIRED
    cert_path = os.path.join(os.path.dirname(__file__), "keycert.pem")
    ssl_context.load_cert_chain(cert_path)
    ssl_context.load_verify_locations(cert_path)

- in addition to test_handle_read() and test_handle_write(), there
should be a test where a server and a client really send data to each
other, and receive at all

(also, I'm not sure why these tests can't be shared with non-SSL test
classes)

- test_create_socket() and test_bind() don't seem to test anything
SSL-related

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue10084>
_______________________________________


More information about the Python-bugs-list mailing list