SSL_connect - initiate the TLS/SSL handshake with an
       TLS/SSL server


SYNOPSIS

        #include <openssl/ssl.h>

        int SSL_connect(SSL *ssl);


DESCRIPTION

       SSL_connect() initiates the TLS/SSL handshake with a
       server. The communication channel must already have been
       set and assigned to the ssl by setting an underlying BIO.


NOTES

       The behaviour of SSL_connect() depends on the underlying
       BIO.

       If the underlying BIO is blocking, SSL_connect() will only
       return once the handshake has been finished or an error
       occurred.

       If the underlying BIO is non-blocking, SSL_connect() will
       also return when the underlying BIO could not satisfy the
       needs of SSL_connect() to continue the handshake. In this
       case a call to SSL_get_error() with the return value of
       SSL_connect() will yield SSL_ERROR_WANT_READ or
       SSL_ERROR_WANT_WRITE. The calling process then must repeat
       the call after taking appropriate action to satisfy the
       needs of SSL_connect().  The action depends on the
       underlying BIO. When using a non-blocking socket, nothing
       is to be done, but select() can be used to check for the
       required condition. When using a buffering BIO, like a BIO
       pair, data must be written into or retrieved out of the
       BIO before being able to continue.

       When using a generic method (see SSL_CTX_new(3)), it is
       necessary to call SSL_set_connect_state(3) before calling
       SSL_connect() to explicitly switch the ssl to client mode.


RETURN VALUES

       The following return values can occur:

       1   The TLS/SSL handshake was successfully completed, a
           TLS/SSL connection has been established.

       0   The TLS/SSL handshake was not successful but was shut
           down controlled and by the specifications of the
           TLS/SSL protocol. Call SSL_get_error() with the return
           value ret to find out the reason.

       <0  The TLS/SSL handshake was not successful, because a
           fatal error occurred either at the protocol level or a

           clean. It can also occur of action is need to continue
           the operation for non-blocking BIOs. Call
           SSL_get_error() with the return value ret to find out
           the reason.


SEE ALSO

       SSL_get_error(3), SSL_accept(3), SSL_shutdown(3), ssl(3),
       bio(3), SSL_set_connect_state(3), SSL_CTX_new(3)


Man(1) output converted with man2html