summaryrefslogtreecommitdiff
path: root/doc/man3/SSL_get_conn_close_info.pod
diff options
context:
space:
mode:
Diffstat (limited to 'doc/man3/SSL_get_conn_close_info.pod')
-rw-r--r--doc/man3/SSL_get_conn_close_info.pod93
1 files changed, 93 insertions, 0 deletions
diff --git a/doc/man3/SSL_get_conn_close_info.pod b/doc/man3/SSL_get_conn_close_info.pod
new file mode 100644
index 0000000000..5f9a2c3e38
--- /dev/null
+++ b/doc/man3/SSL_get_conn_close_info.pod
@@ -0,0 +1,93 @@
+=pod
+
+=head1 NAME
+
+SSL_get_conn_close_info - get information about why a QUIC connection was closed
+
+=head1 SYNOPSIS
+
+ #include <openssl/ssl.h>
+
+ typedef struct ssl_conn_close_info_st {
+ uint64_t error_code;
+ char *reason;
+ size_t reason_len;
+ char is_local;
+ char is_transport;
+ } SSL_CONN_CLOSE_INFO;
+
+ int SSL_get_conn_close_info(SSL *ssl, SSL_CONN_CLOSE_INFO *info,
+ size_t info_len);
+
+=head1 DESCRIPTION
+
+The SSL_get_conn_close_info() function provides information about why and how a
+QUIC connection was closed.
+
+Connection closure information is written to B<*info>, which must be non-NULL.
+B<info_len> must be set to B<sizeof(*info)>.
+
+The following fields are set:
+
+=over 4
+
+=item B<error_code>
+
+This is a 62-bit QUIC error code. It is either a 62-bit application error code
+(if B<is_transport> is 0) or a 62-bit standard QUIC transport error code (if
+B<is_transport> is 1).
+
+=item B<reason>
+
+If non-NULL, this is intended to be a UTF-8 textual string briefly describing
+the reason for connection closure. The length of the reason string in bytes is
+given in B<reason_len>. While, if non-NULL, OpenSSL guarantees that this string
+will be zero terminated, consider that this buffer may originate from the
+(untrusted) peer and thus may also contain zero bytes elsewhere. Therefore, use
+of B<reason_len> is recommended.
+
+While it is intended as per the QUIC protocol that this be a UTF-8 string, there
+is no guarantee that this is the case for strings received from the peer.
+
+=item B<is_local>
+
+If 1, connection closure was locally triggered. This could be due to an
+application request (e.g. if B<is_transport> is 0), or (if B<is_transport> is 1)
+due to logic internal to the QUIC implementation (for example, if the peer
+engages in a protocol violation, or an idle timeout occurs).
+
+If 0, connection closure was remotely triggered.
+
+=item B<is_transport>
+
+If 1, connection closure was triggered for QUIC protocol reasons.
+
+If 0, connection closure was triggered by the local or remote application.
+
+=back
+
+=head1 RETURN VALUES
+
+SSL_get_conn_close_info() returns 1 on success and 0 on failure. This function
+fails if called on a QUIC connection SSL object which has not yet been
+terminated. It also fails if called on a QUIC stream SSL object or a non-QUIC
+SSL object.
+
+=head1 SEE ALSO
+
+L<SSL_shutdown_ex(3)>
+
+=head1 HISTORY
+
+This function was added in OpenSSL 3.2.
+
+=head1 COPYRIGHT
+
+Copyright 2002-2023 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