diff options
-rw-r--r-- | changes/bug4457 | 8 | ||||
-rw-r--r-- | src/common/compat_libevent.c | 13 |
2 files changed, 20 insertions, 1 deletions
diff --git a/changes/bug4457 b/changes/bug4457 new file mode 100644 index 0000000000..d3d9eb3b40 --- /dev/null +++ b/changes/bug4457 @@ -0,0 +1,8 @@ + o Minor bugfixes: + - Initialize Libevent with the EVENT_BASE_FLAG_NOLOCK flag enabled, so + that it doesn't attempt to allocate a socketpair. This could cause + some problems on windows systems with overzealous firewalls. Fix for + bug 4457; workaround for Libevent versions 2.0.1-alpha through + 2.0.15-stable. + + diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c index 6d89be804b..3e35e093e4 100644 --- a/src/common/compat_libevent.c +++ b/src/common/compat_libevent.c @@ -177,7 +177,18 @@ tor_libevent_initialize(void) #endif #ifdef HAVE_EVENT2_EVENT_H - the_event_base = event_base_new(); + { + struct event_config *cfg = event_config_new(); + + /* In 0.2.2, we don't use locking at all. Telling Libevent not to try to + * turn it on can avoid a needless socketpair() attempt. + */ + event_config_set_flag(cfg, EVENT_BASE_FLAG_NOLOCK); + + the_event_base = event_base_new_with_config(cfg); + + event_config_free(cfg); + } #else the_event_base = event_init(); #endif |