diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-07-21 15:11:14 +0000 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-07-21 15:11:14 +0000 |
| commit | c25ede247940f9a4c44d5daaad34d18b9ec0a152 (patch) | |
| tree | 52713216e073506aa3453f673c2c459ec5281cee | |
| parent | 3f6e3845680a744ac2a157e01696a67cdb66daa6 (diff) | |
| download | btpd-c25ede247940f9a4c44d5daaad34d18b9ec0a152.tar.gz btpd-c25ede247940f9a4c44d5daaad34d18b9ec0a152.zip | |
Clear flag for busy blocks when entering end game.
Add test for program correctness.
| -rw-r--r-- | btpd/policy_subr.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/btpd/policy_subr.c b/btpd/policy_subr.c index 269d238..cd87a4e 100644 --- a/btpd/policy_subr.c +++ b/btpd/policy_subr.c @@ -51,10 +51,16 @@ static void cm_enter_endgame(struct torrent *tp) { struct peer *p; + struct piece *pc; btpd_log(BTPD_L_POL, "Entering end game\n"); tp->endgame = 1; + BTPDQ_FOREACH(pc, &tp->getlst, entry) { + for (uint32_t i = 0; i < pc->nblocks; i++) + clear_bit(pc->down_field, i); + pc->nbusy = 0; + } BTPDQ_FOREACH(p, &tp->peers, cm_entry) { - struct piece *pc; + assert(p->nwant == 0); BTPDQ_FOREACH(pc, &tp->getlst, entry) { if (peer_has(p, pc->index)) { peer_want(p, pc->index); |