about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard Nyberg <rnyberg@murmeldjur.se>2005-12-01 13:56:43 +0000
committerRichard Nyberg <rnyberg@murmeldjur.se>2005-12-01 13:56:43 +0000
commit7a5d04eed4ee5a746e779471789ea7b91430edeb (patch)
tree76ccc72cb38569a7df08cb59fe7989763539935b
parentc285b374f87991e8d4d8f5e8e8f8c39d416f0a20 (diff)
downloadbtpd-7a5d04eed4ee5a746e779471789ea7b91430edeb.tar.gz
btpd-7a5d04eed4ee5a746e779471789ea7b91430edeb.zip
Fix an unsafe loop.
-rw-r--r--btpd/upload.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/btpd/upload.c b/btpd/upload.c
index 94d3eb4..42de2ac 100644
--- a/btpd/upload.c
+++ b/btpd/upload.c
@@ -42,10 +42,12 @@ ul_on_lost_peer(struct peer *p)
 void
 ul_on_lost_torrent(struct torrent *tp)
 {
-    struct peer *p;
-    BTPDQ_FOREACH(p, &tp->peers, p_entry) {
+    struct peer *p = BTPDQ_FIRST(&m_peerq);
+    while (p != NULL) {
+        struct peer *next = BTPDQ_NEXT(p, p_entry);
         BTPDQ_REMOVE(&m_peerq, p, ul_entry);
         m_npeers--;
+        p = next;
     }
     choke_do();
 }