diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-08-18 15:08:49 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-08-18 15:16:05 -0400 |
commit | d3653063d30ee8174f6ec330124553c6717fbe9c (patch) | |
tree | 8b79ef5db5ab4b85cf5296f26836b21b7210db3e /src/common | |
parent | 52e36feda153e70cd08d624df73035b7e59a95ef (diff) | |
download | tor-d3653063d30ee8174f6ec330124553c6717fbe9c.tar tor-d3653063d30ee8174f6ec330124553c6717fbe9c.tar.gz |
Automatically use filtering bufferevents with IOCP.
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/compat_libevent.c | 11 | ||||
-rw-r--r-- | src/common/compat_libevent.h | 1 | ||||
-rw-r--r-- | src/common/tortls.c | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index 8752de749..595742f96 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -164,6 +164,16 @@ struct event_base *the_event_base = NULL; #endif #endif +#ifdef USE_BUFFEREVENTS +static int using_iocp_bufferevents = 0; + +int +tor_libevent_using_iocp_bufferevents(void) +{ + return using_iocp_bufferevents; +} +#endif + /** Initialize the Libevent library and set up the event base. */ void tor_libevent_initialize(tor_libevent_cfg *torcfg) @@ -187,6 +197,7 @@ tor_libevent_initialize(tor_libevent_cfg *torcfg) if (! torcfg->disable_iocp) { evthread_use_windows_threads(); event_config_set_flag(cfg, EVENT_BASE_FLAG_STARTUP_IOCP); + using_iocp_bufferevents = 1; } #endif diff --git a/src/common/compat_libevent.h b/src/common/compat_libevent.h index 8669fd4e0..bbe105bf4 100644 --- a/src/common/compat_libevent.h +++ b/src/common/compat_libevent.h @@ -73,6 +73,7 @@ const char *tor_libevent_get_version_str(void); #ifdef USE_BUFFEREVENTS #define TOR_LIBEVENT_TICKS_PER_SECOND 3 const struct timeval *tor_libevent_get_one_tick_timeout(void); +int tor_libevent_using_iocp_bufferevents(void); #endif #endif diff --git a/src/common/tortls.c b/src/common/tortls.c index 455603030..2aaa2c49b 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -1892,7 +1892,7 @@ tor_tls_init_bufferevent(tor_tls_t *tls, struct bufferevent *bufev_in, const enum bufferevent_ssl_state state = receiving ? BUFFEREVENT_SSL_ACCEPTING : BUFFEREVENT_SSL_CONNECTING; - if (filter) { + if (filter || tor_libevent_using_iocp_bufferevents()) { /* Grab an extra reference to the SSL, since BEV_OPT_CLOSE_ON_FREE means that the SSL will get freed too. |