mirror of
https://github.com/nginx/nginx.git
synced 2025-06-06 17:02:39 +08:00
Proper SSL shutdown handling.
If connection has unsent alerts, SSL_shutdown() tries to send them even if SSL_set_shutdown(SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN) was used. This can be prevented by SSL_set_quiet_shutdown(). SSL_set_shutdown() is required nevertheless to preserve session.
This commit is contained in:
parent
09be2f18c5
commit
a9e3c65d22
@ -1205,6 +1205,7 @@ ngx_ssl_shutdown(ngx_connection_t *c)
|
|||||||
|
|
||||||
if (c->timedout) {
|
if (c->timedout) {
|
||||||
mode = SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN;
|
mode = SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN;
|
||||||
|
SSL_set_quiet_shutdown(c->ssl->connection, 1);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
mode = SSL_get_shutdown(c->ssl->connection);
|
mode = SSL_get_shutdown(c->ssl->connection);
|
||||||
@ -1216,6 +1217,10 @@ ngx_ssl_shutdown(ngx_connection_t *c)
|
|||||||
if (c->ssl->no_send_shutdown) {
|
if (c->ssl->no_send_shutdown) {
|
||||||
mode |= SSL_SENT_SHUTDOWN;
|
mode |= SSL_SENT_SHUTDOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (c->ssl->no_wait_shutdown && c->ssl->no_send_shutdown) {
|
||||||
|
SSL_set_quiet_shutdown(c->ssl->connection, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SSL_set_shutdown(c->ssl->connection, mode);
|
SSL_set_shutdown(c->ssl->connection, mode);
|
||||||
|
Loading…
Reference in New Issue
Block a user