SSL_get_error — obtain result code for TLS/SSL I/O operation
libssl.lib
#include <openssl/ssl.h>
int SSL_get_error(const SSL *ssl, int ret);
SSL_get_error()
returns a result code (suitable for the C ``switch''
statement) for a preceding call to SSL_connect(), SSL_accept(), SSL_do_handshake(),
SSL_read(), SSL_peek(), or SSL_write()
on ssl.
The value returned by
that TLS/SSL I/O function must be passed to SSL_get_error()
in parameter
ret.
In addition to ssl and ret,
SSL_get_error()
inspects the
current thread's OpenSSL error queue. Thus, SSL_get_error()
must be
used in the same thread that performed the TLS/SSL I/O operation, and no
other OpenSSL function calls should appear in between.
The current
thread's error queue must be empty before the TLS/SSL I/O operation is
attempted, or SSL_get_error()
will not work reliably.
The following return values can currently occur:
For socket BIOs (e.g. when
SSL_set_fd()
was used),
select()
or
poll()
on the underlying socket can be used to find out when the
TLS/SSL I/O function should be retried.
Caveat: Any TLS/SSL I/O function can lead to either of
SSL_ERROR_WANT_READ and SSL_ERROR_WANT_WRITE. In particular,
SSL_read()
or
SSL_peek()
may want to write data and
SSL_write()
may want
to read data. This is mainly because TLS/SSL handshakes may occur at any
time during the protocol (initiated by either the client or the server);
SSL_read(), SSL_peek(), and SSL_write()
will handle any pending handshakes.
BIO_s_connect()
or BIO_s_accept()
BIO, respectively.
In order to find out, when the connection has been successfully established,
on many platforms select()
or poll()
for writing on the socket file descriptor
can be used.
SSL_CTX_set_client_cert_cb()
has asked to be called again.
The TLS/SSL I/O function should be called again later.
Details depend on the application.
ERR_get_error()
returns 0), ret can be used to find out more
about the error: If ret == 0, an EOF was observed that violates
the protocol. If ret == -1, the underlying BIO reported an
I/O error (for socket I/O on Unix systems, consult errno for details).
SSL_get_error()
was added in SSLeay 0.8.
For additional information or queries on this page send feedback
© 2005-2007 Nokia |