Loading changes/bug27861 0 → 100644 +4 −0 Original line number Diff line number Diff line o Major bugfixes (initialization, crash): - Fix an assertion crash that would stop Tor from starting up if the code tried to activate a periodic event too early. Fixes bug 27861; bugfix on 0.3.5.1-alpha. src/core/mainloop/mainloop.c +6 −5 Original line number Diff line number Diff line Loading @@ -1535,7 +1535,9 @@ initialize_periodic_events_cb(evutil_socket_t fd, short events, void *data) STATIC void initialize_periodic_events(void) { tor_assert(periodic_events_initialized == 0); if (periodic_events_initialized) return; periodic_events_initialized = 1; /* Set up all periodic events. We'll launch them by roles. */ Loading Loading @@ -2682,6 +2684,8 @@ dns_servers_relaunch_checks(void) void initialize_mainloop_events(void) { initialize_periodic_events(); if (!schedule_active_linked_connections_event) { schedule_active_linked_connections_event = mainloop_event_postloop_new(schedule_active_linked_connections_cb, NULL); Loading @@ -2699,10 +2703,7 @@ do_main_loop(void) /* initialize the periodic events first, so that code that depends on the * events being present does not assert. */ if (! periodic_events_initialized) { initialize_periodic_events(); } initialize_mainloop_events(); /* set up once-a-second callback. */ Loading src/test/test_periodic_event.c +6 −2 Original line number Diff line number Diff line Loading @@ -87,15 +87,19 @@ test_pe_launch(void *arg) item->fn = dumb_event_fn; } /* Lets make sure that before intialization, we can't scan the periodic * events list and launch them. Lets try by being a Client. */ options = get_options_mutable(); options->SocksPort_set = 1; periodic_events_on_new_options(options); #if 0 /* Lets make sure that before intialization, we can't scan the periodic * events list and launch them. Lets try by being a Client. */ /* XXXX We make sure these events are initialized now way earlier than we * did before. */ for (int i = 0; periodic_events[i].name; ++i) { periodic_event_item_t *item = &periodic_events[i]; tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0); } #endif initialize_periodic_events(); Loading Loading
changes/bug27861 0 → 100644 +4 −0 Original line number Diff line number Diff line o Major bugfixes (initialization, crash): - Fix an assertion crash that would stop Tor from starting up if the code tried to activate a periodic event too early. Fixes bug 27861; bugfix on 0.3.5.1-alpha.
src/core/mainloop/mainloop.c +6 −5 Original line number Diff line number Diff line Loading @@ -1535,7 +1535,9 @@ initialize_periodic_events_cb(evutil_socket_t fd, short events, void *data) STATIC void initialize_periodic_events(void) { tor_assert(periodic_events_initialized == 0); if (periodic_events_initialized) return; periodic_events_initialized = 1; /* Set up all periodic events. We'll launch them by roles. */ Loading Loading @@ -2682,6 +2684,8 @@ dns_servers_relaunch_checks(void) void initialize_mainloop_events(void) { initialize_periodic_events(); if (!schedule_active_linked_connections_event) { schedule_active_linked_connections_event = mainloop_event_postloop_new(schedule_active_linked_connections_cb, NULL); Loading @@ -2699,10 +2703,7 @@ do_main_loop(void) /* initialize the periodic events first, so that code that depends on the * events being present does not assert. */ if (! periodic_events_initialized) { initialize_periodic_events(); } initialize_mainloop_events(); /* set up once-a-second callback. */ Loading
src/test/test_periodic_event.c +6 −2 Original line number Diff line number Diff line Loading @@ -87,15 +87,19 @@ test_pe_launch(void *arg) item->fn = dumb_event_fn; } /* Lets make sure that before intialization, we can't scan the periodic * events list and launch them. Lets try by being a Client. */ options = get_options_mutable(); options->SocksPort_set = 1; periodic_events_on_new_options(options); #if 0 /* Lets make sure that before intialization, we can't scan the periodic * events list and launch them. Lets try by being a Client. */ /* XXXX We make sure these events are initialized now way earlier than we * did before. */ for (int i = 0; periodic_events[i].name; ++i) { periodic_event_item_t *item = &periodic_events[i]; tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0); } #endif initialize_periodic_events(); Loading