typedef enum {
REQUEST_ACTIVE = 1,
REQUEST_STOP_PROCESSING,
- REQUEST_COUNTED
} rad_master_state_t;
-#define REQUEST_MASTER_NUM_STATES (REQUEST_COUNTED + 1)
+#define REQUEST_MASTER_NUM_STATES (REQUEST_STOP_PROCESSING + 1)
typedef enum {
REQUEST_QUEUED = 1,
#define RAD_REQUEST_OPTION_COA (1 << 0)
#define RAD_REQUEST_OPTION_CTX (1 << 1)
#define RAD_REQUEST_OPTION_CANCELLED (1 << 2)
+#define RAD_REQUEST_OPTION_STATS (1 << 3)
#define SECONDS_PER_DAY 86400
#define MAX_REQUEST_TIME 30
#ifdef HAVE_PTHREAD_H
rad_assert(request->child_pid == NO_SUCH_CHILD_PID);
#endif
+
+ /*
+ * Set the statistics immediately if we can.
+ */
+ request_stats_final(request);
+
STATE_MACHINE_TIMER(FR_ACTION_TIMER);
return;
}
#ifdef DEBUG_STATE_MACHINE
if (rad_debug_lvl) printf("(%u) ********\tNEXT-STATE %s -> %s\n", request->number, __FUNCTION__, "request_cleanup_delay");
#endif
+
+ request_stats_final(request);
+
STATE_MACHINE_TIMER(FR_ACTION_TIMER);
return;
} /* else it's time to clean up */
rad_listen_t *listener;
RADCLIENT *client;
- if (request->master_state == REQUEST_COUNTED) return;
+ if ((request->options & RAD_REQUEST_OPTION_STATS) != 0) return;
/* don't count statistic requests */
if (request->packet->code == PW_CODE_STATUS_SERVER) {
done:
#endif /* WITH_PROXY */
- request->master_state = REQUEST_COUNTED;
+ request->options |= RAD_REQUEST_OPTION_STATS;
}
typedef struct fr_stats2vp {