mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Merge branch 'maint-0.3.4' into release-0.3.4
This commit is contained in:
commit
258759547b
6
changes/bug27003
Normal file
6
changes/bug27003
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Major bugfixes (event scheduler):
|
||||||
|
- When we enable a periodic event, schedule it in the event loop
|
||||||
|
rather than running it immediately. Previously, we would re-run
|
||||||
|
periodic events immediately in the middle of (for example)
|
||||||
|
changing our options, with unpredictable effects. Fixes bug
|
||||||
|
27003; bugfix on 0.3.4.1-alpha.
|
@ -140,8 +140,8 @@ periodic_event_destroy(periodic_event_item_t *event)
|
|||||||
event->last_action_time = 0;
|
event->last_action_time = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Enable the given event which means the event is launched and then the
|
/** Enable the given event by setting its "enabled" flag and scheduling it to
|
||||||
* event's enabled flag is set. This can be called for an event that is
|
* run immediately in the event loop. This can be called for an event that is
|
||||||
* already enabled. */
|
* already enabled. */
|
||||||
void
|
void
|
||||||
periodic_event_enable(periodic_event_item_t *event)
|
periodic_event_enable(periodic_event_item_t *event)
|
||||||
@ -152,7 +152,9 @@ periodic_event_enable(periodic_event_item_t *event)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
periodic_event_launch(event);
|
tor_assert(event->ev);
|
||||||
|
event->enabled = 1;
|
||||||
|
mainloop_event_activate(event->ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Disable the given event which means the event is destroyed and then the
|
/** Disable the given event which means the event is destroyed and then the
|
||||||
@ -169,4 +171,3 @@ periodic_event_disable(periodic_event_item_t *event)
|
|||||||
mainloop_event_cancel(event->ev);
|
mainloop_event_cancel(event->ev);
|
||||||
event->enabled = 0;
|
event->enabled = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,11 +106,11 @@ test_pe_launch(void *arg)
|
|||||||
periodic_event_item_t *item = &periodic_events[i];
|
periodic_event_item_t *item = &periodic_events[i];
|
||||||
if (item->roles & PERIODIC_EVENT_ROLE_CLIENT) {
|
if (item->roles & PERIODIC_EVENT_ROLE_CLIENT) {
|
||||||
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
|
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
|
||||||
tt_u64_op(item->last_action_time, OP_NE, 0);
|
|
||||||
} else {
|
} else {
|
||||||
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
|
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
|
||||||
tt_u64_op(item->last_action_time, OP_EQ, 0);
|
|
||||||
}
|
}
|
||||||
|
// enabled or not, the event has not yet been run.
|
||||||
|
tt_u64_op(item->last_action_time, OP_EQ, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove Client but become a Relay. */
|
/* Remove Client but become a Relay. */
|
||||||
@ -127,12 +127,9 @@ test_pe_launch(void *arg)
|
|||||||
/* Only Client role should be disabled. */
|
/* Only Client role should be disabled. */
|
||||||
if (item->roles == PERIODIC_EVENT_ROLE_CLIENT) {
|
if (item->roles == PERIODIC_EVENT_ROLE_CLIENT) {
|
||||||
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
|
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 0);
|
||||||
/* Was previously enabled so they should never be to 0. */
|
|
||||||
tt_u64_op(item->last_action_time, OP_NE, 0);
|
|
||||||
}
|
}
|
||||||
if (item->roles & PERIODIC_EVENT_ROLE_RELAY) {
|
if (item->roles & PERIODIC_EVENT_ROLE_RELAY) {
|
||||||
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
|
tt_int_op(periodic_event_is_enabled(item), OP_EQ, 1);
|
||||||
tt_u64_op(item->last_action_time, OP_NE, 0);
|
|
||||||
}
|
}
|
||||||
/* Non Relay role should be disabled, except for Dirserver. */
|
/* Non Relay role should be disabled, except for Dirserver. */
|
||||||
if (!(item->roles & roles)) {
|
if (!(item->roles & roles)) {
|
||||||
@ -330,4 +327,3 @@ struct testcase_t periodic_event_tests[] = {
|
|||||||
|
|
||||||
END_OF_TESTCASES
|
END_OF_TESTCASES
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user