udp_result_t *r;
udp_request_t *u;
fr_trunk_request_t *treq;
- fr_trunk_enqueue_t q;
fr_assert(request->packet->code > 0);
fr_assert(request->packet->code < FR_RADIUS_CODE_MAX);
pair_delete_request(attr_message_authenticator);
}
- q = fr_trunk_request_enqueue(&treq, t->trunk, request, u, r);
- if (q < 0) {
+ switch(fr_trunk_request_enqueue(&treq, t->trunk, request, u, r)) {
+ case FR_TRUNK_ENQUEUE_OK:
+ case FR_TRUNK_ENQUEUE_IN_BACKLOG:
+ break;
+
+ case FR_TRUNK_ENQUEUE_NO_CAPACITY:
+ REDEBUG("Unable to queue packet - connections at maximum capacity");
+ fail:
fr_assert(!u->rr && !u->packet); /* Should not have been fed to the muxer */
fr_trunk_request_free(&treq); /* Return to the free list */
- fail:
talloc_free(r);
RETURN_MODULE_FAIL;
- }
- /*
- * All destinations are down.
- */
- if (q == FR_TRUNK_ENQUEUE_IN_BACKLOG) {
- RDEBUG("All destinations are down - cannot send packet");
- fr_trunk_request_signal_cancel(treq);
+ case FR_TRUNK_ENQUEUE_DST_UNAVAILABLE:
+ REDEBUG("All destinations are down - cannot send packet");
+ goto fail;
+
+ case FR_TRUNK_ENQUEUE_FAIL:
+ REDEBUG("Unable to queue packet");
goto fail;
}