mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Merge branch 'ticket_27861'
This commit is contained in:
commit
09223ad83b
3 changed files with 16 additions and 7 deletions
4
changes/bug27861
Normal file
4
changes/bug27861
Normal file
|
@ -0,0 +1,4 @@
|
|||
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.
|
|
@ -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. */
|
||||
|
@ -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);
|
||||
|
@ -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_periodic_events();
|
||||
initialize_mainloop_events();
|
||||
|
||||
/* set up once-a-second callback. */
|
||||
|
|
|
@ -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…
Add table
Reference in a new issue