Improve SSL_shutdown documentation.
authorKurt Roeckx <kurt@roeckx.be>
Mon, 13 Apr 2020 11:01:29 +0000 (13:01 +0200)
committerRichard Levitte <levitte@openssl.org>
Tue, 5 May 2020 04:39:39 +0000 (06:39 +0200)
Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org>
(Merged from https://github.com/openssl/openssl/pull/11531)

(cherry picked from commit e307e616f25a6b7b0f343fc1e62a35b2cba888f3)

doc/man3/SSL_shutdown.pod

index 732e5ada04ae349fe76a4f42a6bcd35fd48e9304..30cf484619ff5c610353d63f7b9ff853c106aeb5 100644 (file)
@@ -116,6 +116,16 @@ state but not actually send the close_notify alert messages,
 see L<SSL_CTX_set_quiet_shutdown(3)>.
 When "quiet shutdown" is enabled, SSL_shutdown() will always succeed
 and return 1.
+Note that this is not standard compliant behaviour.
+It should only be done when the peer has a way to make sure all
+data has been received and doesn't wait for the close_notify alert
+message, otherwise an unexpected EOF will be reported.
+
+There are implementations that do not send the required close_notify alert.
+If there is a need to communicate with such an implementation, and it's clear
+that all data has been received, do not wait for the peer's close_notify alert.
+Waiting for the close_notify alert when the peer just closes the connection will
+result in an error being generated.
 
 =head1 RETURN VALUES
 
@@ -128,8 +138,10 @@ The following return values can occur:
 The shutdown is not yet finished: the close_notify was sent but the peer
 did not send it back yet.
 Call SSL_read() to do a bidirectional shutdown.
-The output of L<SSL_get_error(3)> may be misleading, as an
-erroneous SSL_ERROR_SYSCALL may be flagged even though no error occurred.
+
+Unlike most other function, returning 0 does not indicate an error.
+L<SSL_get_error(3)> should not get called, it may misleadingly
+indicate an error even though no error occurred.
 
 =item Z<>1