void Client_janitor()
{
- struct dlist *itr;
+ struct dlist *itr, *save;
int bwTop = maxBandwidth + maxBandwidth / 4;
- list_iterate(itr, &clients) {
+ list_iterate_safe(itr, save, &clients) {
client_t *c;
c = list_get_entry(itr, client_t, node);
Log_debug("Client %s BW available %d", c->username, c->availableBandwidth);
if (c->availableBandwidth > bwTop)
c->availableBandwidth = bwTop;
- if (Timer_isElapsed(&c->lastActivity, 1000000LL * INACTICITY_TIMEOUT)) {
+ if (Timer_isElapsed(&c->lastActivity, 1000000LL * INACTIVITY_TIMEOUT)) {
/* No activity from client - assume it is lost and close. */
Log_info_client(c, "Timeout, closing.");
Client_free(c);
client->availableBandwidth -= packetsize;
Timer_restart(&client->idleTime);
+ Timer_restart(&client->lastActivity);
counter = Pds_get_numval(pdi); /* step past session id */
do {