On Tue, Apr 19, 2005, John Hoel wrote:
> I am having the same problem. I am adding OpenSSL to an existing application
> that calls connect(), and have added logic to use OpenSSL after connect()
> completes successfully. Here is what I have done:
>
> int existing_sock = nnn;
> int rc = 0;
> int code = 0;
> BIO *bio = NULL;
> SSL *ssl = NULL;
>
> bio = BIO_new_socket( existing_sock, BIO_NOCLOSE );
> BIO_set_nbio( bio, 1 );
> ssl = SSL_new( ctx );
> SSL_set_connect_state( ssl );
> SSL_set_bio( ssl, bio, bio );
>
> rc = SSL_connect( ssl );
> if (rc <= 0 )
> {
> code = SSL_get_error( ssl, rc );
> switch( code )
> {
> case SSL_ERROR_ZERO_RETURN:
> buf = ERR_error_string( code, NULL );
> etc...
> }
> }
>
> The first problem I encountered with this code is that when the error
> occurs, ERR_get_error_line_data() returns zero. I then added the call to
> ERR_error_string(). The value pointed to by 'buf' is this:
>
> "error:00000005:lib(0):func(0):DH lib"
>
> This error always occurs. What could be causing this? Why is this message so
> minimally informative?
>
Because the value returned from SSL_get_error() is one of the SSL_ERROR_*
values (ssl.h) and not usable by the ERR library: so you are getting garbage.
In this case SSL_ERROR_SYSCALL.
> I've searched the OpenSSL code for an instance of '5' and found 2:
> ERR_R_DH_LIB and SYS_F_IOCTLSOCKET. Could it be that the error is not DH at
> all. Could this be a problem with the socket when ioctlsocket() is called?
>
> This same problem occurs when accepting a connection using accept(), then
> the above technique for SSL_accept().
>
Try it without the SSL_set_connect_state() call.
You might also want to try it with a blocking socket first (without the
BIO_set_nbio() call) to see if it works.
Steve.
--
Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage
OpenSSL project core developer and freelance consultant.
Funding needed! Details on homepage.
Homepage: http://www.drh-consultancy.demon.co.uk
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]