diff --git a/platform/src/ssl_stream.cpp b/platform/src/ssl_stream.cpp index 52a1685..4040d54 100644 --- a/platform/src/ssl_stream.cpp +++ b/platform/src/ssl_stream.cpp @@ -2111,6 +2111,14 @@ void ssl_stream_free_and_close_fd(struct ssl_stream * s_stream, struct event_bas //pxy_ssl_shutdown_cb(fd, 0, sslshutctx); SSL_set_shutdown(s_stream->ssl, SSL_RECEIVED_SHUTDOWN); SSL_shutdown(s_stream->ssl); + bufferevent_disable(bev, EV_READ|EV_WRITE); + struct bufferevent *ubev = bufferevent_get_underlying(bev); + if (ubev) { + bufferevent_disable(ubev, EV_READ|EV_WRITE); + bufferevent_setfd(ubev, -1); + bufferevent_setcb(ubev, NULL, NULL, NULL, NULL); + bufferevent_free(ubev); + } ssl_stream_free(s_stream); evutil_closesocket(fd); }