Ver código fonte

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 anos atrás
pai
commit
66d742a48e
2 arquivos alterados com 4 adições e 2 exclusões
  1. +4
    -0
      btpd/download_subr.c
  2. +0
    -2
      btpd/peer.c

+ 4
- 0
btpd/download_subr.c Ver arquivo

@@ -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 Ver arquivo

@@ -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);


Carregando…
Cancelar
Salvar