[Python-Dev] ssl module, non-blocking sockets and asyncore integration (original) (raw)
Bill Janssen janssen at parc.com
Wed Sep 17 20:42:38 CEST 2008
- Previous message: [Python-Dev] ssl module, non-blocking sockets and asyncore integration
- Next message: [Python-Dev] ssl module, non-blocking sockets and asyncore integration
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Jean-Paul Calderone <exarkun at divmod.com> wrote:
On Wed, 17 Sep 2008 10:40:01 PDT, Bill Janssen <janssen at parc.com> wrote: >Ah, now I remember. It seems that sometimes when SSLERRORWANTREAD >was returned, things would block; that is, the "handleread" method on >asyncore.dispatcher was never called again, so the SSLSocket.recv() >method was never re-called. There are several levels of buffering going >on, and I never figured out just why that was. This (very rare) re-call >of "read" is to handle that. >
You certainly do need to call read again if OpenSSL fails an SSLread with a want-read error, but in asyncore, you don't want to do it right away, you want to wait until the socket becomes readable again, otherwise you do block waiting for bytes from the network. See the SSL support in Twisted for an example of the correct way to handle this. Jean-Paul
Yes, I understand, and that's how I started out. The bug we were seeing was that "handle_read" wasn't being called again by asyncore.
Bill
- Previous message: [Python-Dev] ssl module, non-blocking sockets and asyncore integration
- Next message: [Python-Dev] ssl module, non-blocking sockets and asyncore integration
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]