Blame doc/man3/SSL_want.pod

Packit c4476c
=pod
Packit c4476c
Packit c4476c
=head1 NAME
Packit c4476c
Packit c4476c
SSL_want, SSL_want_nothing, SSL_want_read, SSL_want_write, SSL_want_x509_lookup,
Packit c4476c
SSL_want_async, SSL_want_async_job, SSL_want_client_hello_cb - obtain state
Packit c4476c
information TLS/SSL I/O operation
Packit c4476c
Packit c4476c
=head1 SYNOPSIS
Packit c4476c
Packit c4476c
 #include <openssl/ssl.h>
Packit c4476c
Packit c4476c
 int SSL_want(const SSL *ssl);
Packit c4476c
 int SSL_want_nothing(const SSL *ssl);
Packit c4476c
 int SSL_want_read(const SSL *ssl);
Packit c4476c
 int SSL_want_write(const SSL *ssl);
Packit c4476c
 int SSL_want_x509_lookup(const SSL *ssl);
Packit c4476c
 int SSL_want_async(const SSL *ssl);
Packit c4476c
 int SSL_want_async_job(const SSL *ssl);
Packit c4476c
 int SSL_want_client_hello_cb(const SSL *ssl);
Packit c4476c
Packit c4476c
=head1 DESCRIPTION
Packit c4476c
Packit c4476c
SSL_want() returns state information for the SSL object B<ssl>.
Packit c4476c
Packit c4476c
The other SSL_want_*() calls are shortcuts for the possible states returned
Packit c4476c
by SSL_want().
Packit c4476c
Packit c4476c
=head1 NOTES
Packit c4476c
Packit c4476c
SSL_want() examines the internal state information of the SSL object. Its
Packit c4476c
return values are similar to that of L<SSL_get_error(3)>.
Packit c4476c
Unlike L<SSL_get_error(3)>, which also evaluates the
Packit c4476c
error queue, the results are obtained by examining an internal state flag
Packit c4476c
only. The information must therefore only be used for normal operation under
Packit c4476c
non-blocking I/O. Error conditions are not handled and must be treated
Packit c4476c
using L<SSL_get_error(3)>.
Packit c4476c
Packit c4476c
The result returned by SSL_want() should always be consistent with
Packit c4476c
the result of L<SSL_get_error(3)>.
Packit c4476c
Packit c4476c
=head1 RETURN VALUES
Packit c4476c
Packit c4476c
The following return values can currently occur for SSL_want():
Packit c4476c
Packit c4476c
=over 4
Packit c4476c
Packit c4476c
=item SSL_NOTHING
Packit c4476c
Packit c4476c
There is no data to be written or to be read.
Packit c4476c
Packit c4476c
=item SSL_WRITING
Packit c4476c
Packit c4476c
There are data in the SSL buffer that must be written to the underlying
Packit c4476c
B<BIO> layer in order to complete the actual SSL_*() operation.
Packit c4476c
A call to L<SSL_get_error(3)> should return
Packit c4476c
SSL_ERROR_WANT_WRITE.
Packit c4476c
Packit c4476c
=item SSL_READING
Packit c4476c
Packit c4476c
More data must be read from the underlying B<BIO> layer in order to
Packit c4476c
complete the actual SSL_*() operation.
Packit c4476c
A call to L<SSL_get_error(3)> should return
Packit c4476c
SSL_ERROR_WANT_READ.
Packit c4476c
Packit c4476c
=item SSL_X509_LOOKUP
Packit c4476c
Packit c4476c
The operation did not complete because an application callback set by
Packit c4476c
SSL_CTX_set_client_cert_cb() has asked to be called again.
Packit c4476c
A call to L<SSL_get_error(3)> should return
Packit c4476c
SSL_ERROR_WANT_X509_LOOKUP.
Packit c4476c
Packit c4476c
=item SSL_ASYNC_PAUSED
Packit c4476c
Packit c4476c
An asynchronous operation partially completed and was then paused. See
Packit c4476c
L<SSL_get_all_async_fds(3)>. A call to L<SSL_get_error(3)> should return
Packit c4476c
SSL_ERROR_WANT_ASYNC.
Packit c4476c
Packit c4476c
=item SSL_ASYNC_NO_JOBS
Packit c4476c
Packit c4476c
The asynchronous job could not be started because there were no async jobs
Packit c4476c
available in the pool (see ASYNC_init_thread(3)). A call to L<SSL_get_error(3)>
Packit c4476c
should return SSL_ERROR_WANT_ASYNC_JOB.
Packit c4476c
Packit c4476c
=item SSL_CLIENT_HELLO_CB
Packit c4476c
Packit c4476c
The operation did not complete because an application callback set by
Packit c4476c
SSL_CTX_set_client_hello_cb() has asked to be called again.
Packit c4476c
A call to L<SSL_get_error(3)> should return
Packit c4476c
SSL_ERROR_WANT_CLIENT_HELLO_CB.
Packit c4476c
Packit c4476c
=back
Packit c4476c
Packit c4476c
SSL_want_nothing(), SSL_want_read(), SSL_want_write(), SSL_want_x509_lookup(),
Packit c4476c
SSL_want_async(), SSL_want_async_job(), and SSL_want_client_hello_cb() return
Packit c4476c
1, when the corresponding condition is true or 0 otherwise.
Packit c4476c
Packit c4476c
=head1 SEE ALSO
Packit c4476c
Packit c4476c
L<ssl(7)>, L<SSL_get_error(3)>
Packit c4476c
Packit c4476c
=head1 HISTORY
Packit c4476c
Packit c4476c
The SSL_want_client_hello_cb() function and the SSL_CLIENT_HELLO_CB return value
Packit c4476c
were added in OpenSSL 1.1.1.
Packit c4476c
Packit c4476c
=head1 COPYRIGHT
Packit c4476c
Packit c4476c
Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved.
Packit c4476c
Packit c4476c
Licensed under the OpenSSL license (the "License").  You may not use
Packit c4476c
this file except in compliance with the License.  You can obtain a copy
Packit c4476c
in the file LICENSE in the source distribution or at
Packit c4476c
L<https://www.openssl.org/source/license.html>.
Packit c4476c
Packit c4476c
=cut