if (cd) fr_worker_drain_input(worker, ch, cd);
}
+static void worker_reset_timer(fr_worker_t *worker);
+
/** Reply to a request
*
*/
fr_dlist_remove(&request->async->time_order);
talloc_free(request);
-}
-static void worker_reset_timer(fr_worker_t *worker);
+ if (!worker->num_active) worker_reset_timer(worker);
+}
/** Enforce max_request_time
*
entry = FR_DLIST_TAIL(worker->time_order);
if (!entry) {
+ rad_assert(worker->num_active == 0);
+ fr_log(worker->log, L_DBG, "Worker has nothing to do, deleting cleanup timer.");
if (worker->ev_cleanup) fr_event_timer_delete(worker->el, &worker->ev_cleanup);
worker->next_cleanup = 0;
return;
}
+ rad_assert(worker->num_active > 0);
async = fr_ptr_to_type(fr_async_t, time_order, entry);
worker->next_cleanup = cleanup;
fr_time_to_timeval(&when, cleanup);
+ fr_log(worker->log, L_DBG, "Resetting worker cleanup timer to +30s");
if (fr_event_timer_insert(worker, worker->el, &worker->ev_cleanup,
&when, fr_worker_max_request_time, worker) < 0) {
fr_log(worker->log, L_ERR, "Failed inserting max_request_time timer.");