Bläddra i källkod

peer_on_no_reqs was called unsafely in peer_on_choke. It should only be

called after removing the last request.
master
Richard Nyberg 18 år sedan
förälder
incheckning
66d742a48e
2 ändrade filer med 4 tillägg och 2 borttagningar
  1. +4
    -0
      btpd/download_subr.c
  2. +0
    -2
      btpd/peer.c

+ 4
- 0
btpd/download_subr.c Visa fil

@@ -415,6 +415,9 @@ dl_unassign_requests(struct peer *p)
req = next;
}

if (p->nreqs_out == 0)
peer_on_no_reqs(p);

if (was_full && !piece_full(pc))
dl_on_piece_unfull(pc);
}
@@ -497,6 +500,7 @@ dl_unassign_requests_eg(struct peer *p)
}
}
assert(BTPDQ_EMPTY(&p->my_reqs));
peer_on_no_reqs(p);

pc = BTPDQ_FIRST(&tmp);
while (pc != NULL) {


+ 0
- 2
btpd/peer.c Visa fil

@@ -369,8 +369,6 @@ peer_on_choke(struct peer *p)
if ((p->flags & PF_P_CHOKE) != 0)
return;
else {
if (p->nreqs_out > 0)
peer_on_no_reqs(p);
p->flags |= PF_P_CHOKE;
dl_on_choke(p);
struct nb_link *nl = BTPDQ_FIRST(&p->outq);


Laddar…
Avbryt
Spara