2022-11-15 02:13:35 +08:00
|
|
|
=pod
|
|
|
|
|
|
|
|
=head1 NAME
|
|
|
|
|
|
|
|
SSL_set_blocking_mode, SSL_get_blocking_mode - configure blocking mode for a
|
|
|
|
QUIC SSL object
|
|
|
|
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
|
|
|
|
#include <openssl/ssl.h>
|
|
|
|
|
2023-01-06 19:50:55 +08:00
|
|
|
int SSL_set_blocking_mode(SSL *s, int blocking);
|
|
|
|
int SSL_get_blocking_mode(SSL *s);
|
2022-11-15 02:13:35 +08:00
|
|
|
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
|
|
|
|
SSL_set_blocking_mode() can be used to enable or disable blocking mode on a QUIC
|
|
|
|
connection SSL object. By default, blocking is enabled, unless the SSL object is
|
|
|
|
configured to use an underlying read or write BIO which cannot provide a poll
|
|
|
|
descriptor (see L<BIO_get_rpoll_descriptor(3)>), as blocking mode cannot be
|
|
|
|
supported in this case.
|
|
|
|
|
2022-12-15 15:05:21 +08:00
|
|
|
To enable blocking mode, call SSL_set_blocking_mode() with I<blocking> set to 1;
|
|
|
|
to disable it, call SSL_set_blocking_mode() with I<blocking> set to 0.
|
2022-11-15 02:13:35 +08:00
|
|
|
|
|
|
|
To retrieve the current blocking mode, call SSL_get_blocking_mode().
|
|
|
|
|
|
|
|
Blocking mode means that calls such as SSL_read() and SSL_write() will block
|
|
|
|
until the requested operation can be performed. In nonblocking mode, these
|
|
|
|
calls will fail if the requested operation cannot be performed immediately; see
|
|
|
|
L<SSL_get_error(3)>.
|
|
|
|
|
|
|
|
These functions are only applicable to QUIC connection SSL objects. Other kinds
|
|
|
|
of SSL object, such as those for TLS, automatically function in blocking or
|
|
|
|
nonblocking mode based on whether the underlying network read and write BIOs
|
|
|
|
provided to the SSL object are themselves configured in nonblocking mode.
|
|
|
|
|
|
|
|
Where a QUIC connection SSL object is used in nonblocking mode, an application
|
|
|
|
is responsible for ensuring that the SSL object is ticked regularly; see
|
|
|
|
L<SSL_tick(3)>.
|
|
|
|
|
2023-01-09 19:31:07 +08:00
|
|
|
Blocking mode is disabled automatically if the application provides a QUIC
|
|
|
|
connection SSL object with a network BIO which cannot support blocking mode. To
|
|
|
|
re-enable blocking mode in this case, an application must set a network BIO
|
|
|
|
which can support blocking mode and explicitly call SSL_set_blocking_mode().
|
|
|
|
|
2022-11-15 02:13:35 +08:00
|
|
|
=head1 RETURN VALUES
|
|
|
|
|
|
|
|
SSL_set_blocking_mode() returns 1 on success and 0 on failure. The function
|
|
|
|
fails if called on a SSL object which does not represent a QUIC connection,
|
|
|
|
or if blocking mode cannot be used for the given connection.
|
|
|
|
|
|
|
|
SSL_get_blocking_mode() returns 1 if blocking is currently enabled. It returns
|
|
|
|
-1 if called on an unsupported SSL object.
|
|
|
|
|
|
|
|
=head1 SEE ALSO
|
|
|
|
|
|
|
|
L<SSL_tick(3)>, L<ssl(7)>
|
|
|
|
|
|
|
|
=head1 HISTORY
|
|
|
|
|
|
|
|
The SSL_set_blocking_mode() and SSL_get_blocking_mode() functions were added in
|
|
|
|
OpenSSL 3.2.
|
|
|
|
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
|
2022-12-15 15:05:21 +08:00
|
|
|
Copyright 2022 The OpenSSL Project Authors. All Rights Reserved.
|
2022-11-15 02:13:35 +08:00
|
|
|
|
|
|
|
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
|