Blame doc/man3/SSL_CTX_set_read_ahead.pod

Packit Service 084de1
=pod
Packit Service 084de1
Packit Service 084de1
=head1 NAME
Packit Service 084de1
Packit Service 084de1
SSL_CTX_set_read_ahead, SSL_CTX_get_read_ahead,
Packit Service 084de1
SSL_set_read_ahead, SSL_get_read_ahead,
Packit Service 084de1
SSL_CTX_get_default_read_ahead
Packit Service 084de1
- manage whether to read as many input bytes as possible
Packit Service 084de1
Packit Service 084de1
=head1 SYNOPSIS
Packit Service 084de1
Packit Service 084de1
 #include <openssl/ssl.h>
Packit Service 084de1
Packit Service 084de1
 void SSL_set_read_ahead(SSL *s, int yes);
Packit Service 084de1
 int SSL_get_read_ahead(const SSL *s);
Packit Service 084de1
Packit Service 084de1
 SSL_CTX_set_read_ahead(SSL_CTX *ctx, int yes);
Packit Service 084de1
 long SSL_CTX_get_read_ahead(SSL_CTX *ctx);
Packit Service 084de1
 long SSL_CTX_get_default_read_ahead(SSL_CTX *ctx);
Packit Service 084de1
Packit Service 084de1
=head1 DESCRIPTION
Packit Service 084de1
Packit Service 084de1
SSL_CTX_set_read_ahead() and SSL_set_read_ahead() set whether we should read as
Packit Service 084de1
many input bytes as possible (for non-blocking reads) or not. For example if
Packit Service 084de1
B<x> bytes are currently required by OpenSSL, but B<y> bytes are available from
Packit Service 084de1
the underlying BIO (where B<y> > B<x>), then OpenSSL will read all B<y> bytes
Packit Service 084de1
into its buffer (providing that the buffer is large enough) if reading ahead is
Packit Service 084de1
on, or B<x> bytes otherwise.
Packit Service 084de1
Setting the parameter B<yes> to 0 turns reading ahead is off, other values turn
Packit Service 084de1
it on.
Packit Service 084de1
SSL_CTX_set_default_read_ahead() is identical to SSL_CTX_set_read_ahead().
Packit Service 084de1
Packit Service 084de1
SSL_CTX_get_read_ahead() and SSL_get_read_ahead() indicate whether reading
Packit Service 084de1
ahead has been set or not.
Packit Service 084de1
SSL_CTX_get_default_read_ahead() is identical to SSL_CTX_get_read_ahead().
Packit Service 084de1
Packit Service 084de1
=head1 NOTES
Packit Service 084de1
Packit Service 084de1
These functions have no impact when used with DTLS. The return values for
Packit Service 084de1
SSL_CTX_get_read_head() and SSL_get_read_ahead() are undefined for DTLS. Setting
Packit Service 084de1
B<read_ahead> can impact the behaviour of the SSL_pending() function
Packit Service 084de1
(see L<SSL_pending(3)>).
Packit Service 084de1
Packit Service 084de1
Since SSL_read() can return B<SSL_ERROR_WANT_READ> for non-application data
Packit Service 084de1
records, and SSL_has_pending() can't tell the difference between processed and
Packit Service 084de1
unprocessed data, it's recommended that if read ahead is turned on that
Packit Service 084de1
B<SSL_MODE_AUTO_RETRY> is not turned off using SSL_CTX_clear_mode().
Packit Service 084de1
That will prevent getting B<SSL_ERROR_WANT_READ> when there is still a complete
Packit Service 084de1
record available that hasn't been processed.
Packit Service 084de1
Packit Service 084de1
If the application wants to continue to use the underlying transport (e.g. TCP
Packit Service 084de1
connection) after the SSL connection is finished using SSL_shutdown() reading
Packit Service 084de1
ahead should be turned off.
Packit Service 084de1
Otherwise the SSL structure might read data that it shouldn't.
Packit Service 084de1
Packit Service 084de1
=head1 RETURN VALUES
Packit Service 084de1
Packit Service 084de1
SSL_get_read_ahead() and SSL_CTX_get_read_ahead() return 0 if reading ahead is off,
Packit Service 084de1
and non zero otherwise.
Packit Service 084de1
Packit Service 084de1
=head1 SEE ALSO
Packit Service 084de1
Packit Service 084de1
L<ssl(7)>, L<SSL_pending(3)>
Packit Service 084de1
Packit Service 084de1
=head1 COPYRIGHT
Packit Service 084de1
Packit Service 084de1
Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved.
Packit Service 084de1
Packit Service 084de1
Licensed under the OpenSSL license (the "License").  You may not use
Packit Service 084de1
this file except in compliance with the License.  You can obtain a copy
Packit Service 084de1
in the file LICENSE in the source distribution or at
Packit Service 084de1
L<https://www.openssl.org/source/license.html>.
Packit Service 084de1
Packit Service 084de1
=cut