SSL_accept (3)
Leading comments
Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) Standard preamble: ========================================================================
NAME
SSL_accept - wait for a TLS/SSL client to initiate a TLS/SSL handshakeSYNOPSIS
#include <openssl/ssl.h> int SSL_accept(SSL *ssl);
DESCRIPTION
SSL_accept() waits for aTLS/SSL
client to initiate the TLS/SSL
handshake.
The communication channel must already have been set and assigned to the
ssl by setting an underlying BIO
.
NOTES
The behaviour of SSL_accept() depends on the underlyingBIO.
If the underlying
BIO
is blocking, SSL_accept() will only return once the
handshake has been finished or an error occurred.
If the underlying
BIO
is non-blocking, SSL_accept() will also return
when the underlying BIO
could not satisfy the needs of SSL_accept()
to continue the handshake, indicating the problem by the return value -1.
In this case a call to SSL_get_error() with the
return value of SSL_accept() 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_accept().
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.
RETURN VALUES
The following return values can occur:- 0
-
The TLS/SSLhandshake was not successful but was shut down controlled and by the specifications of theTLS/SSLprotocol. Call SSL_get_error() with the return value ret to find out the reason.
- 1
-
The TLS/SSLhandshake was successfully completed, aTLS/SSLconnection has been established.
- <0
-
The TLS/SSLhandshake was not successful because a fatal error occurred either at the protocol level or a connection failure occurred. The shutdown was not 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.