Can calls to non-blocking SSL_read() and SSL_write() be interleaved?

I'm doing select() / event driven IO, and using a BIO pair to handle the
underlying socket IO myself.

A typical sequence might be:

    SSL_read(ssl, read_buf, read_size);  /* returns e.g. SSL_ERROR_WANT_READ */

    select();

    /* woken up by an unrelated event which triggers: */
    SSL_write(ssl, write_buf, write_size);
    /* which causes data to be  appended to the BIO slave,
       then returns SSL_ERROR_NONE. We read the data from BIO master
       and schedule it to be writtenl then: */

    select();

    /* data available; read() and append to BIO master, then: */
    SSL_read(ssl, read_buf, read_size);  /* returns SSL_ERROR_NONE */
    select();

Is that call to SSL_write() legitimate while the SSL_read() isn't finished?


-- 
Any [programming] language that doesn't occasionally surprise the
novice will pay for it by continually surprising the expert.
   -- Larry Wall
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to