diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2006-01-16 21:30:54 +0000 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2006-01-16 21:30:54 +0000 |
| commit | 66d742a48e2d264b370b8157c78f55a76a90a462 (patch) | |
| tree | 9a950aba13b9bdf231d15ab72ffe342042da4bf2 | |
| parent | cdd5e3fbb1bcfc4c0c42758d15a7bf6e2dced8c6 (diff) | |
| download | btpd-66d742a48e2d264b370b8157c78f55a76a90a462.tar.gz btpd-66d742a48e2d264b370b8157c78f55a76a90a462.zip | |
peer_on_no_reqs was called unsafely in peer_on_choke. It should only be
called after removing the last request.
| -rw-r--r-- | btpd/download_subr.c | 4 | ||||
| -rw-r--r-- | btpd/peer.c | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/btpd/download_subr.c b/btpd/download_subr.c index 225effc..282a516 100644 --- a/btpd/download_subr.c +++ b/btpd/download_subr.c @@ -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) { diff --git a/btpd/peer.c b/btpd/peer.c index 1b8f344..109b836 100644 --- a/btpd/peer.c +++ b/btpd/peer.c @@ -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); |