On 29 Nov, 00:26, Bill Janssen <[EMAIL PROTECTED]> wrote: > > I tried to write a simple asyncore-based server code, then I used a > > simple client to establish a connection with it. > > Once the client is connected server raises the following exception: > > I think this is a bug. Thanks!
You're welcome. > The issue is that the internal call to do_handshake() doesn't handle > non-blocking sockets properly. > > You can work around the bug like this: > > --- snippet --- > import asyncore, asynchat, socket, ssl, select > > class Handler(asyncore.dispatcher): > > def __init__(self, conn): > asyncore.dispatcher.__init__(self, conn) > self.socket = ssl.wrap_socket(conn, server_side=True, > certfile='keycert.pem', > do_handshake_on_connect=False) > while True: > try: > self.socket.do_handshake() > break > except ssl.SSLError, err: > if err.args[0] == ssl.SSL_ERROR_WANT_READ: > select.select([self.socket], [], []) > elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE: > select.select([], [self.socket], []) > else: > raise > self.send('hi there') > --- /snippet --- > > Bill It does raise the same exception. Are there plans for fixing this? Using that kind of workaround is not acceptable in any case (select module shouldn't even get imported when using asyncore). Moreover I think we need at least a minimal test suite to make sure that non-blocking sockets work properly. I'm not experienced with ssl module but I know asyncore/asynchat quite good. If you need some help I could propose myself for writing a minimal test suite for asyncore integration with ssl module when the bocking issues will be fixed. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com