int message_set_size; //!< default start number of messages
int ring_buffer_size; //!< default start size for the ring buffers
+ int max_request_time; //!< maximum time a request can be processed
+
size_t talloc_pool_size; //!< for each REQUEST
fr_time_t checked_timeout; //!< when we last checked the tails of the queues
if (!request) return;
rad_assert(worker->num_active > 0);
- cleanup = 30;
+ cleanup = worker->max_request_time;
cleanup *= NANOSEC;
cleanup += request->async->recv_time;
fr_time_to_timeval(&when, cleanup);
worker->next_cleanup = cleanup;
fr_time_to_timeval(&when, cleanup);
- DEBUG2("Resetting worker cleanup timer to +30s");
+ DEBUG2("Resetting worker cleanup timer to +%ds", worker->max_request_time);
if (fr_event_timer_insert(worker, worker->el, &worker->ev_cleanup,
&when, fr_worker_max_request_time, worker) < 0) {
ERROR("Failed inserting max_request_time timer.");
cd = fr_ptr_to_type(fr_channel_data_t, request.list, entry);
waiting = now - cd->m.when;
- if (waiting < (20 * (fr_time_t) NANOSEC)) break;
+ if (waiting < ((worker->max_request_time - 2) * (fr_time_t) NANOSEC)) break;
/*
* Waiting too long, delete it.
worker->talloc_pool_size = 4096; /* at least enough for a REQUEST */
worker->message_set_size = 1024;
worker->ring_buffer_size = (1 << 16);
+ worker->max_request_time = 30;
if (fr_event_pre_insert(worker->el, fr_worker_pre_event, worker) < 0) {
fr_strerror_printf("Failed adding pre-check to event list");