talloc_free_children(track);
+ fr_assert(track->client->packets > 0);
+ track->client->packets--;
+
return 0;
}
* receive time, etc.
*/
if (!client->inst->app_io->track_duplicates) {
+ client->packets++;
talloc_set_destructor(track, track_free);
return track;
}
fr_assert(0);
}
+ client->packets++;
talloc_set_destructor(track, track_dedup_free);
return track;
}
* dynamic client.
*/
track->dynamic = recv_time;
-
- } else {
- /*
- * One more packet being used by this client.
- *
- * Note that pending packets don't count against
- * the "live packet" count.
- */
- client->packets++;
}
/*
fr_io_instance_t const *inst;
fr_io_connection_t *connection;
fr_time_delta_t delay;
- int packets, connections;
+ int connections;
/*
* No event list? We don't need to expire the client.
goto reset_timer;
}
- /*
- * Count active packets AND pending packets.
- */
- packets = client->packets;
- if (client->pending) packets += fr_heap_num_elements(client->pending);
-
/*
* It's a negative cache entry. Just delete it.
*/
if (client->state == PR_CLIENT_NAK) {
delete_client:
- fr_assert(packets == 0);
+ fr_assert(client->packets == 0);
/*
* It's a connected socket. Remove it from the
*/
if ((client->state == PR_CLIENT_DYNAMIC) ||
(client->state == PR_CLIENT_CONNECTED)) {
- if (packets > 0) {
+ if (client->packets > 0) {
client->ready_to_delete = false;
return;
}
* to be run again.
*/
if (!client->use_connected) {
- if (!packets) {
+ if (!client->packets) {
goto delete_client;
}
*/
talloc_free(track);
- fr_assert(client->packets > 0);
- client->packets--;
-
/*
* The client isn't dynamic, stop here.
*/
fr_io_client_t *client;
RADCLIENT *radclient;
fr_listen_t *child;
- int packets;
fr_event_list_t *el;
get_inst(li, &inst, &thread, &connection, &child);
fr_assert(inst->dynamic_clients);
fr_assert(client->pending != NULL);
- packets = client->packets + fr_heap_num_elements(client->pending);
-
-
/*
* The request has timed out trying to define the dynamic
* client. Oops... try again.
* Maybe we defined the client, but the original packet
* timed out, so there's nothing more to do. In that case, set up the expiry timers.
*/
- if (packets == 0) {
+ if (client->packets == 0) {
client_expiry_timer(el, 0, client);
}