From dec3a0af7a2424ed16bdd12a8871930067060cee Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Fri, 1 Jul 2022 13:31:29 -0400 Subject: [PATCH] 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. --- src/feature/hs/hs_circuit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/feature/hs/hs_circuit.c b/src/feature/hs/hs_circuit.c index 26dd600f1d..4e31a534b0 100644 --- a/src/feature/hs/hs_circuit.c +++ b/src/feature/hs/hs_circuit.c @@ -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. */