In addition to B<ssl> and B<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 SSL I/O operation, and no
In addition to B<ssl> and B<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 SSL I/O operation, and no
thread's error queue must be empty before the SSL I/O operation is
attempted, or SSL_get_error() will not work reliably.
thread's error queue must be empty before the SSL I/O operation is
attempted, or SSL_get_error() will not work reliably.
=item SSL_ERROR_ZERO_RETURN
The SSL connection has been closed. If the protocol version is SSL 3.0
or TLS 1.0, this result code is returned only if a closure
=item SSL_ERROR_ZERO_RETURN
The SSL connection has been closed. If the protocol version is SSL 3.0
or TLS 1.0, this result code is returned only if a closure
(i.e. ERR_get_error() returns 0), B<ret> can be used to find out more
about the error: If B<ret == 0>, an EOF was observed that violates
the protocol. If B<ret == -1>, the underlying B<BIO> reported an
(i.e. ERR_get_error() returns 0), B<ret> can be used to find out more
about the error: If B<ret == 0>, an EOF was observed that violates
the protocol. If B<ret == -1>, the underlying B<BIO> reported an