make the rend_pqueue_cb event be postloop

this change makes us reach the callback *after* each mainloop
run, rather than as the next event to run immediately after
activation.

with the old behavior, we were starving everything else to drain the
pqueue entirely, each time we got a new intro2 cell.

now we at least will get to other activities as well.
This commit is contained in:
Roger Dingledine 2022-07-01 13:31:29 -04:00 committed by Micah Elizabeth Scott
parent b95bd5017f
commit dec3a0af7a

View File

@ -812,7 +812,7 @@ enqueue_rend_request(const hs_service_t *service, hs_service_intro_point_t *ip,
/* Initialize the priority queue event if it hasn't been done so already. */
if (pow_state->pop_pqueue_ev == NULL) {
pow_state->pop_pqueue_ev =
mainloop_event_new(handle_rend_pqueue_cb, (void *)service);
mainloop_event_postloop_new(handle_rend_pqueue_cb, (void *)service);
}
/* Activate event, we just enqueued a rendezvous request. */