comparison src/event/ngx_event_openssl.c @ 7708:f3c87533f92c

SSL: disabled shutdown after connection errors. This fixes "SSL_shutdown() failed (SSL: ... bad write retry)" errors as observed on the second SSL_shutdown() call after SSL shutdown fixes in 09fb2135a589 (1.19.2), notably when sending fails in ngx_http_test_expect(), similarly to ticket #1194. Note that there are some places where c->error is misused to prevent further output, such as ngx_http_v2_finalize_connection() if there are pending streams, or in filter finalization. These places seem to be extreme enough to don't care about missing shutdown though. For example, filter finalization currently prevents keepalive from being used.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 16 Sep 2020 18:26:24 +0300
parents adaec579a967
children 052ecc68d350
comparison
equal deleted inserted replaced
7707:adaec579a967 7708:f3c87533f92c
2803 c->ssl = NULL; 2803 c->ssl = NULL;
2804 2804
2805 return NGX_OK; 2805 return NGX_OK;
2806 } 2806 }
2807 2807
2808 if (c->timedout) { 2808 if (c->timedout || c->error) {
2809 mode = SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN; 2809 mode = SSL_RECEIVED_SHUTDOWN|SSL_SENT_SHUTDOWN;
2810 SSL_set_quiet_shutdown(c->ssl->connection, 1); 2810 SSL_set_quiet_shutdown(c->ssl->connection, 1);
2811 2811
2812 } else { 2812 } else {
2813 mode = SSL_get_shutdown(c->ssl->connection); 2813 mode = SSL_get_shutdown(c->ssl->connection);