From: Arran Cudbard-Bell Date: Mon, 5 Apr 2021 22:10:31 +0000 (+0100) Subject: Ensure we don't trash request->packet->code X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=595df1f35fd74a7053e9a9aff7100422a4a6aa03;p=thirdparty%2Ffreeradius-server.git Ensure we don't trash request->packet->code --- diff --git a/src/lib/io/worker.c b/src/lib/io/worker.c index 9356b5bf17..59c52ccc27 100644 --- a/src/lib/io/worker.c +++ b/src/lib/io/worker.c @@ -648,12 +648,15 @@ static inline CC_HINT(always_inline) void worker_request_init(fr_worker_t *worker, request_t *request, fr_time_t now) { request->el = worker->el; - MEM(request->packet = fr_radius_packet_alloc(request, false)); - request->packet->timestamp = now; - request->reply = fr_radius_packet_alloc(request, false); - fr_assert(request->reply != NULL); + /* + * For internal requests request->packet + * and request->reply are already populated. + */ + if (!request->packet) MEM(request->packet = fr_radius_packet_alloc(request, false)); + if (!request->reply) MEM(request->reply = fr_radius_packet_alloc(request, false)); + request->packet->timestamp = now; request->async = talloc_zero(request, fr_async_t); request->async->recv_time = now; request->async->el = worker->el;