diff --git a/platform/src/ssl_stream.cpp b/platform/src/ssl_stream.cpp index 1535c68..14c4297 100644 --- a/platform/src/ssl_stream.cpp +++ b/platform/src/ssl_stream.cpp @@ -80,7 +80,7 @@ enum ssl_stream_stat SSL_DOWN_NEW, SSL_DOWN_ERR, SSL_DOWN_ERR_NO_CERT, - SSL_DOWN_ERR_INAPPROPRIATE_FALLBACK, + SSL_DOWN_ERR_INAPPROPRIATE_FALLBACK, SSL_DOWN_CLOSING, SSL_DOWN_CLOSED, @@ -1998,7 +1998,10 @@ static void pxy_ssl_shutdown_cb(evutil_socket_t fd, short what, void * arg) ctx->ev = NULL; } - TFE_PROXY_STAT_INCREASE(STAT_FD_DEFER_CLOSE_IN_QUEUE, 1); + if(what == 0) + { + TFE_PROXY_STAT_INCREASE(STAT_FD_DEFER_CLOSE_IN_QUEUE, 1); + } /* * Use the new (post-2008) semantics for SSL_shutdown() on a @@ -2009,6 +2012,10 @@ static void pxy_ssl_shutdown_cb(evutil_socket_t fd, short what, void * arg) * This is a good collection of recent and relevant documents: * http://bugs.python.org/issue8108 */ + if(what == EV_TIMEOUT) + { + SSL_set_shutdown(ctx->s_stream->ssl, SSL_RECEIVED_SHUTDOWN); + } rv = SSL_shutdown(ctx->s_stream->ssl); if (rv == 1) @@ -2063,7 +2070,7 @@ retry: if (ctx->ev) { - event_add(ctx->ev, NULL); + event_add(ctx->ev, &retry_delay); } else {