diff --git a/modules/ssl/ssl_engine_io.c b/modules/ssl/ssl_engine_io.c index 0bd5e2bf32..de71166335 100644 --- a/modules/ssl/ssl_engine_io.c +++ b/modules/ssl/ssl_engine_io.c @@ -984,22 +984,20 @@ static apr_status_t ssl_filter_io_shutdown(ssl_filter_ctx_t *filter_ctx, static apr_status_t ssl_io_filter_cleanup(void *data) { - apr_status_t ret; - ssl_filter_ctx_t *filter_ctx = (ssl_filter_ctx_t *)data; - conn_rec *c; + ssl_filter_ctx_t *filter_ctx = data; - if (!filter_ctx->pssl) { - /* already been shutdown */ - return APR_SUCCESS; + if (filter_ctx->pssl) { + conn_rec *c = (conn_rec *)SSL_get_app_data(filter_ctx->pssl); + SSLConnRec *sslconn = myConnConfig(c); + + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, NULL, + "SSL connection destroyed without being closed"); + + SSL_free(filter_ctx->pssl); + sslconn->ssl = filter_ctx->pssl = NULL; } - - c = (conn_rec *)SSL_get_app_data(filter_ctx->pssl); - if ((ret = ssl_filter_io_shutdown(filter_ctx, c, 0)) != APR_SUCCESS) { - ap_log_error(APLOG_MARK, APLOG_INFO, ret, NULL, - "SSL filter error shutting down I/O"); - } - - return ret; + + return APR_SUCCESS; } /*