]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Ensure we don't trash request->packet->code
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 5 Apr 2021 22:10:31 +0000 (23:10 +0100)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 5 Apr 2021 22:10:31 +0000 (23:10 +0100)
src/lib/io/worker.c

index 9356b5bf17aa4102f046ec305e2f0418b84e0c7d..59c52ccc276d3354621136907977a6261f40fd4c 100644 (file)
@@ -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;