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

Reply via email to