[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [tor/master 36/38] Always defer bufferevent_openssl callbacks to avoid reentrant invocations
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Mon, 27 Sep 2010 13:02:11 -0400
Subject: Always defer bufferevent_openssl callbacks to avoid reentrant invocations
Commit: b7ae108e187b8396315287de0177e11bb4733545
---
src/common/tortls.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/common/tortls.c b/src/common/tortls.c
index d9f1d87..bd6840a 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;
}
--
1.7.1