> I'm following the example client on:
> http://linux.die.net/man/3/bio_new_ssl_connect
> 
> I am able to establish the ssl connection and send data, but when I go to do
> BIO_read, I get this error:
> 
> error:140950D3:SSL routines:SSL3_READ_N:read bio not set
> 
> I can see with wireshark that the server is sending back some data, but
> BIO_read returns -1.
> 

with further debugging I find that the ssl object's rbio and wbio fields are
nulled out after calling:

i2d_CMS_bio_stream(output, cms, mem, flags));

Any idea why that would be?

Here's a distilled version of the code:

                ctx = SSL_CTX_new(SSLv23_client_method());
                output = BIO_new_ssl_connect(ctx);
                BIO_get_ssl(output, &ssl);
                SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
                BIO_set_conn_hostname(output, host);
                if(BIO_do_connect(output) <= 0)
                        //handle
                if ((use_ssl) && (SSL_get_verify_result(ssl) != X509_V_OK))
                        //handle
                if ((use_ssl) && (BIO_do_handshake(output) <= 0))
                        //handle

                int flags = CMS_STREAM|CMS_NOSMIMECAP;

                        cms = CMS_sign(NULL, NULL, NULL, mem, flags);
                if (!CMS_add1_signer(cms, scert, skey, NULL, flags))
                        //handle

                printf ("ssl->rbio %p\n", ssl->rbio);
                printf ("ssl->wbio %p\n", ssl->wbio);
                if (!i2d_CMS_bio_stream(output, cms, mem, flags))
                        printf ("error writing output\n");      
                printf ("i2d_CMS_bio_stream");
                printf ("ssl->rbio %p\n", ssl->rbio);
                printf ("ssl->wbio %p\n", ssl->wbio);


output is:
ssl->rbio 0x1aadf60
ssl->wbio 0x1aadf60
i2d_CMS_bio_stream
ssl->rbio (nil)
ssl->wbio (nil)

So naturally, after that the next call to BIO_read (output) fails.

why would the bio's be getting set to null?
Is there some other flag or function I need to use to prevent this?

-- 
Chris Bare
ch...@bareflix.com
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to