diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-12-01 13:56:43 +0000 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-12-01 13:56:43 +0000 |
| commit | 7a5d04eed4ee5a746e779471789ea7b91430edeb (patch) | |
| tree | 76ccc72cb38569a7df08cb59fe7989763539935b | |
| parent | c285b374f87991e8d4d8f5e8e8f8c39d416f0a20 (diff) | |
| download | btpd-7a5d04eed4ee5a746e779471789ea7b91430edeb.tar.gz btpd-7a5d04eed4ee5a746e779471789ea7b91430edeb.zip | |
Fix an unsafe loop.
| -rw-r--r-- | btpd/upload.c | 6 |
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(); } |