openssl/doc/man3/SSL_get_rpoll_descriptor.pod

94 lines
3.1 KiB
Plaintext
Raw Normal View History

=pod
=head1 NAME
SSL_get_rpoll_descriptor, SSL_get_wpoll_descriptor, SSL_want_net_read,
SSL_want_net_write - obtain information which can be used to determine when
network I/O can be performed
=head1 SYNOPSIS
#include <openssl/ssl.h>
__owur int SSL_get_rpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc);
__owur int SSL_get_wpoll_descriptor(SSL *s, BIO_POLL_DESCRIPTOR *desc);
__owur int SSL_want_net_read(SSL *s);
__owur int SSL_want_net_write(SSL *s);
=head1 DESCRIPTION
The functions SSL_get_rpoll_descriptor() and SSL_get_wpoll_descriptor() can be
used to determine when an SSL object which represents a QUIC connection can
perform useful network I/O, so that an application using a QUIC connection SSL
object in nonblocking mode can determine when it should call SSL_tick().
On success, these functions output poll descriptors. For more information on
poll descriptors, see L<BIO_get_rpoll_descriptor(3)>.
The functions SSL_want_net_read() and SSL_want_net_write() return 1 or 0
depending on whether the SSL object is currently interested in receiving data
from the network and/or writing data to the network respectively.
If an SSL object is not interested in reading data from the network at the
current time, SSL_want_net_read() will return 0; likewise, if an SSL object is
not interested in writing data to the network at the current time,
SSL_want_net_write() will return 0.
The intention is that an application using QUIC in nonblocking mode can use
these calls, in conjunction with L<SSL_get_tick_timeout(3)> to wait for network
I/O conditions which allow the SSL object to perform useful work. When such a
condition arises, L<SSL_tick(3)> should be called.
In particular, the expected usage is as follows:
=over 4
=item *
SSL_tick() should be called whenever the timeout returned by
SSL_get_tick_timeout(3) (if any) expires
=item *
If the last call to SSL_want_net_read() returned 1, SSL_tick() should be called
whenever the poll descriptor output by SSL_get_rpoll_descriptor() becomes
readable.
=item *
If the last call to SSL_want_net_write() returned 1, SSL_tick() should be called
whenever the poll descriptor output by SSL_get_wpoll_descriptor() becomes
writable.
=back
The return values of the SSL_want_net_read() and SSL_want_net_write() functions
may change in response to any call to the SSL object other than
SSL_want_net_read(), SSL_want_net_write(), SSL_get_rpoll_descriptor(),
SSL_get_wpoll_descriptor() and SSL_get_tick_timeout().
These functions are not supported on non-QUIC SSL objects.
=head1 RETURN VALUES
These functions return 1 on success and 0 on failure.
=head1 SEE ALSO
L<SSL_tick(3)>, L<SSL_get_tick_timeout(3)>, L<ssl(7)>
=head1 HISTORY
The SSL_get_rpoll_descriptor(), SSL_get_wpoll_descriptor(), SSL_want_net_read()
and SSL_want_net_write() functions were added in OpenSSL 3.2.
=head1 COPYRIGHT
Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use
this file except in compliance with the License. You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.
=cut