]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Always need to stop time tracking
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 6 Apr 2021 11:57:07 +0000 (12:57 +0100)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 6 Apr 2021 11:57:07 +0000 (12:57 +0100)
src/lib/io/worker.c

index 607b0a7a11f788f93b4831e4d9ac64977f87e156..93fc77f7ac072a1c13817b02591a2099a5bdf7f1 100644 (file)
@@ -564,11 +564,6 @@ static void worker_send_reply(fr_worker_t *worker, request_t *request, size_t si
                (void) fr_message_alloc(ms, &reply->m, slen);
        }
 
-       /*
-        *      The request is done.  Track that.
-        */
-       worker_request_time_tracking_end(worker, request, now);
-
        /*
         *      Fill in the rest of the fields in the channel message.
         *
@@ -943,6 +938,7 @@ static void _worker_request_internal_init(request_t *request, void *uctx)
 static void _worker_request_done_external(request_t *request, UNUSED rlm_rcode_t rcode, void *uctx)
 {
        fr_worker_t     *worker = talloc_get_type_abort(uctx, fr_worker_t);
+       fr_time_t       now = fr_time();
 
        /*
         *      All external requests MUST have a listener.
@@ -977,6 +973,11 @@ static void _worker_request_done_external(request_t *request, UNUSED rlm_rcode_t
                      "Request %s stack depth %u > 0", request->name, unlang_interpret_stack_depth(request));
        RDEBUG("Done request");
 
+       /*
+        *      The request is done.  Track that.
+        */
+       worker_request_time_tracking_end(worker, request, now);
+
        /*
         *      These conditions are true when the server is
         *      exiting and we're stopping all the requests.
@@ -989,7 +990,7 @@ static void _worker_request_done_external(request_t *request, UNUSED rlm_rcode_t
                return;
        }
 
-       worker_send_reply(worker, request, request->master_state == REQUEST_STOP_PROCESSING ? 1 : 0, fr_time());
+       worker_send_reply(worker, request, request->master_state == REQUEST_STOP_PROCESSING ? 1 : 0, now);
        talloc_free(request);
 }