Is there an easy way to test that my code is handling the WANT_READ and WANT_WRITE cases properly?
e.g. when: 1.) SSL_read() returns WANT_READ 2.) SSL_read() returns WANT_WRITE 3.) SSL_write() returns WANT_READ 4.) SSL_write() returns WANT_WRITE Case #1 seems to be easy to test by reading small blocks of data off the wire. e.g. the client sends over 8K, and I only read 4K. So that is good as it is probably a common case, but it is only one of the four cases. I've tried this, but it didn't seem to have any effect: BIO_set_ssl_renegotiate_bytes(m_bioNetwork, 16); I thought that would trigger a re-negotiation which would cause bytes to end up in the network BIO which needed to be written to the network by my app. Apparently not. As some of you probably recall, I am using buffers in a BIO_pair to do en/decryption between the network and my app. e.g.: BIO_pair ----------- Da <-> WSARecv <-> BIO_write <-> netwk | int <-> SSL* <-> SSL_read Wire WSASend BIO_read BIO | BIO SSL_write Thanks, Nate