From c25ede247940f9a4c44d5daaad34d18b9ec0a152 Mon Sep 17 00:00:00 2001 From: Richard Nyberg Date: Thu, 21 Jul 2005 15:11:14 +0000 Subject: Clear flag for busy blocks when entering end game. Add test for program correctness. --- btpd/policy_subr.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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); -- cgit 1.4.1