=pod

=head1 NAME

SSL_state_string, SSL_state_string_long - get textual description of state of an SSL object

=head1 SYNOPSIS

 #include <openssl/ssl.h>

 const char *SSL_state_string(const SSL *ssl);
 const char *SSL_state_string_long(const SSL *ssl);

=head1 DESCRIPTION

SSL_state_string() returns a 6 letter string indicating the current state
of the SSL object B<ssl>.

SSL_state_string_long() returns a string indicating the current state of
the SSL object B<ssl>.

=head1 NOTES

During its use, an SSL objects passes several states. The state is internally
maintained. Querying the state information is not very informative before
or when a connection has been established. It however can be of significant
interest during the handshake.

When using non-blocking sockets, the function call performing the handshake
may return with SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE condition,
so that SSL_state_string[_long]() may be called.

For both blocking or non-blocking sockets, the details state information
can be used within the info_callback function set with the
SSL_set_info_callback() call.

=head1 RETURN VALUES

Detailed description of possible states to be included later.

=head1 SEE ALSO

L<ssl(3)|ssl(3)>, L<SSL_CTX_set_info_callback(3)|SSL_CTX_set_info_callback(3)>

=cut
