Fix unsafe client removal from list at timeout.
authorMartin Johansson <martin@fatbob.nu>
Wed, 29 Aug 2012 19:13:51 +0000 (21:13 +0200)
committerMartin Johansson <martin@fatbob.nu>
Wed, 29 Aug 2012 19:13:51 +0000 (21:13 +0200)
src/client.c

index a81badf83c9a04e364f4c701bb82c8e61856143c..9f7576eff20051feb3d96ca36fa53ae8c19799c2 100644 (file)
@@ -91,9 +91,9 @@ int Client_getfds(struct pollfd *pollfds)
 
 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);