Use the EVENT_BASE_FLAG_NOLOCK flag to prevent socketpair() invocation

In Tor 0.2.2, we never need the event base to be notifiable, since we
don't call it from other threads.  This is a workaround for bug 4457,
which is not actually a Tor bug IMO.
This commit is contained in:
Nick Mathewson 2011-11-14 17:46:43 -05:00
parent 2b7bdc295a
commit 7363eae13c
2 changed files with 20 additions and 1 deletions

8
changes/bug4457 Normal file
View file

@ -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.

View file

@ -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