From b7ae108e187b8396315287de0177e11bb4733545 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 27 Sep 2010 13:02:11 -0400 Subject: Always defer bufferevent_openssl callbacks to avoid reentrant invocations --- src/common/tortls.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/common') diff --git a/src/common/tortls.c b/src/common/tortls.c index d9f1d875d..bd6840af7 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; } -- cgit v1.2.3