void *packet_ctx;
fr_listen_t *listen; //!< How we received this request,
//!< and how we'll send the reply.
- uint32_t priority; //!< higher == higher priority
-
- uint32_t sequence; //!< higher == higher priority, too
};
int fr_io_listen_free(fr_listen_t *li);
request->async->listen = listen;
request->async->packet_ctx = cd->packet_ctx;
- request->async->priority = cd->priority;
+ request->priority = cd->priority;
/*
* Now that the "request" structure has been initialized, go decode the packet.
request_t const *a = one, *b = two;
int ret;
- ret = CMP(b->async->priority, a->async->priority);
+ ret = CMP(b->priority, a->priority);
if (ret != 0) return ret;
- ret = CMP(a->async->sequence, b->async->sequence);
+ ret = CMP(a->sequence, b->sequence);
if (ret != 0) return ret;
return fr_time_cmp(a->async->recv_time, b->async->recv_time);
int alloc_line; //!< Line the request was allocated on.
fr_dlist_t listen_entry; //!< request's entry in the list for this listener / socket
+
+ uint32_t priority; //!< higher == higher priority
+ uint32_t sequence; //!< higher == higher priority, too
+
fr_heap_index_t runnable; //!< entry in the heap of runnable packets
}; /* request_t typedef */
/*
* Set sequence so that we can prioritize ongoing multi-packet sessions.
*/
- request->async->sequence = entry->tries;
+ request->sequence = entry->tries;
REQUEST_VERIFY(request);
return 0;
}
intp = stack->intp;
- request->async->priority = priority;
+ request->priority = priority;
if (intp->funcs.prioritise) intp->funcs.prioritise(request, intp->uctx);
}
static void instruction_timeout_handler(UNUSED fr_timer_list_t *tl, UNUSED fr_time_t now, void *ctx)
{
- unlang_retry_t *retry = talloc_get_type_abort(ctx, unlang_retry_t);
- request_t *request = talloc_get_type_abort(retry->request, request_t);
+ request_t *request = talloc_get_type_abort(ctx, request_t);
RDEBUG("Maximum timeout reached, signalling interpreter to stop the request.");
*/
if ((request->packet->code == FR_RADIUS_CODE_ACCESS_REQUEST) &&
fr_pair_find_by_da(&request->request_pairs, NULL, attr_state)) {
- request->async->sequence = 1;
+ request->sequence = 1;
}
if (fr_packet_pairs_from_packet(request->request_ctx, &request->request_pairs, request->packet) < 0) {
* Can't use compound literal - const issues.
*/
u->code = request->packet->code;
- u->priority = request->async->priority;
+ u->priority = request->priority;
u->recv_time = request->async->recv_time;
fr_pair_list_init(&u->extra);
*/
MEM(u = talloc_zero(treq, udp_request_t));
u->code = request->packet->code;
- u->priority = request->async->priority;
+ u->priority = request->priority;
u->recv_time = request->async->recv_time;
r->rcode = RLM_MODULE_FAIL;