From: Nick Mathewson Date: Mon, 27 Sep 2010 17:02:11 +0000 (-0400) Subject: Always defer bufferevent_openssl callbacks to avoid reentrant invocations X-Git-Tag: tor-0.2.3.1-alpha~362^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7ae108e187b8396315287de0177e11bb4733545;p=thirdparty%2Ftor.git Always defer bufferevent_openssl callbacks to avoid reentrant invocations --- diff --git a/src/common/tortls.c b/src/common/tortls.c index d9f1d875d2..bd6840af70 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -1710,12 +1710,16 @@ tor_tls_init_bufferevent(tor_tls_t *tls, struct bufferevent *bufev_in, bufferevent_free(bufev_in); } tls->state = TOR_TLS_ST_BUFFEREVENT; + + /* Current versions (as of 2.0.7-rc) of Libevent need to defer + * bufferevent_openssl callbacks, or else our callback functions will + * get called reentrantly, which is bad for us. + */ out = bufferevent_openssl_socket_new(tor_libevent_get_base(), socket, tls->ssl, state, - 0); - //BEV_OPT_DEFER_CALLBACKS); + BEV_OPT_DEFER_CALLBACKS); #endif return out; }