Author pitrou
Recipients amaury.forgeotdarc, barry, ddvoinikov, exarkun, flox, giampaolo.rodola, janssen, jimsmyth, josiah.carlson, josiahcarlson, pitrou, qwavel, rhettinger, srid
Date 2010-03-22.14:57:46
SpamBayes Score 0.000147722
Marked as misclassified No
Message-id <1269269973.3782.5.camel@localhost>
In-reply-to <1269246161.4.0.299316773044.issue3890@psf.upfronthosting.co.za>
Content
> The patch seems ok to me. This is how it was supposed to be in the
> first place if ssl.py behaved as expected with non blocking sockets.

Ok, patch applied.

In light of the recv() and recv_into() implementation change, I also
think we should enable SSL_MODE_AUTO_RETRY for SSL sockets. It prevents
blocking read() calls from getting SSL_ERROR_WANT_READ at all.
(previously, we would loop manually in recv() and recv_into(); letting
the C OpenSSL runtime do it for us is certainly more efficient)

See description in
http://www.openssl.org/docs/ssl/SSL_CTX_set_mode.html:

« SSL_MODE_AUTO_RETRY

        Never bother the application with retries if the transport is
        blocking. If a renegotiation take place during normal operation,
        a SSL_read(3) or SSL_write(3) would return with -1 and indicate
        the need to retry with SSL_ERROR_WANT_READ. In a non-blocking
        environment applications must be prepared to handle incomplete
        read/write operations. In a blocking environment, applications
        are not always prepared to deal with read/write operations
        returning without success report. The flag SSL_MODE_AUTO_RETRY
        will cause read/write operations to only return after the
        handshake and successful completion. »
History
Date User Action Args
2010-03-22 14:57:49pitrousetrecipients: + pitrou, barry, rhettinger, josiahcarlson, exarkun, amaury.forgeotdarc, janssen, giampaolo.rodola, josiah.carlson, ddvoinikov, srid, flox, qwavel, jimsmyth
2010-03-22 14:57:46pitroulinkissue3890 messages
2010-03-22 14:57:46pitroucreate