SSL_shutdown (3)
Leading comments
Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) Standard preamble: ========================================================================
NAME
SSL_shutdown - shut down a TLS/SSL connectionSYNOPSIS
#include <openssl/ssl.h> int SSL_shutdown(SSL *ssl);
DESCRIPTION
SSL_shutdown() shuts down an activeNOTES
SSL_shutdown() tries to send the ``close notify'' shutdown alert to the peer. Whether the operation succeeds or not, theThe shutdown procedure consists of 2 steps: the sending of the ``close notify'' shutdown alert and the reception of the peer's ``close notify'' shutdown alert. According to the
SSL_shutdown() supports both uni- and bidirectional shutdown by its 2 step behaviour.
- When the application is the first party to send the close notify alert, SSL_shutdown() will only send the alert and then set the SSL_SENT_SHUTDOWNflag (so that the session is considered good and will be kept in cache). SSL_shutdown() will then return with 0. If a unidirectional shutdown is enough (the underlying connection shall be closed anyway), this first call to SSL_shutdown() is sufficient. In order to complete the bidirectional shutdown handshake, SSL_shutdown() must be called again. The second call will make SSL_shutdown() wait for the peer's close notify shutdown alert. On success, the second call to SSL_shutdown() will return with 1.
- If the peer already sent the close notify alert and it was already processed implicitly inside another function (SSL_read(3)), the SSL_RECEIVED_SHUTDOWNflag is set. SSL_shutdown() will send the close notify alert, set theSSL_SENT_SHUTDOWNflag and will immediately return with 1. WhetherSSL_RECEIVED_SHUTDOWNis already set can be checked using the SSL_get_shutdown() (see also SSL_set_shutdown(3) call.
It is therefore recommended, to check the return value of SSL_shutdown() and call SSL_shutdown() again, if the bidirectional shutdown is not yet complete (return value of the first call is 0). As the shutdown is not specially handled in the SSLv2 protocol, SSL_shutdown() will succeed on the first call.
The behaviour of SSL_shutdown() additionally depends on the underlying
If the underlying
If the underlying
SSL_shutdown() can be modified to only set the connection to ``shutdown'' state but not actually send the ``close notify'' alert messages, see SSL_CTX_set_quiet_shutdown(3). When ``quiet shutdown'' is enabled, SSL_shutdown() will always succeed and return 1.
RETURN VALUES
The following return values can occur:- 0
-
The shutdown is not yet finished. Call SSL_shutdown() for a second time,
if a bidirectional shutdown shall be performed.
The output of SSL_get_error(3) may be misleading, as an
erroneous SSL_ERROR_SYSCALLmay be flagged even though no error occurred.
- 1
- The shutdown was successfully completed. The ``close notify'' alert was sent and the peer's ``close notify'' alert was received.
- <0
- The shutdown was not successful because a fatal error occurred either at the protocol level or a connection failure occurred. It can also occur if action is need to continue the operation for non-blocking BIOs. Call SSL_get_error(3) with the return value ret to find out the reason.