diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-10-08 14:50:40 +0000 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-10-08 14:50:40 +0000 |
| commit | a263d2f9f69b867be4beb351da0b65d0aeab6a80 (patch) | |
| tree | 090c9a2ff8a8741861e0a946349fd7d1906b1094 | |
| parent | 74c5b19492d955e9b0123075962d33ed74629070 (diff) | |
| download | btpd-a263d2f9f69b867be4beb351da0b65d0aeab6a80.tar.gz btpd-a263d2f9f69b867be4beb351da0b65d0aeab6a80.zip | |
Accept pieces even if they arrive in a different order than the
requests were sent.
| -rw-r--r-- | btpd/peer.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/btpd/peer.c b/btpd/peer.c index bce0497..ba71f73 100644 --- a/btpd/peer.c +++ b/btpd/peer.c @@ -408,11 +408,13 @@ void peer_on_piece(struct peer *p, uint32_t index, uint32_t begin, uint32_t length, const char *data) { - struct block_request *req = BTPDQ_FIRST(&p->my_reqs); - if ((req != NULL && - nb_get_begin(req->blk->msg) == begin && - nb_get_index(req->blk->msg) == index && - nb_get_length(req->blk->msg) == length)) { + struct block_request *req; + BTPDQ_FOREACH(req, &p->my_reqs, p_entry) + if ((nb_get_begin(req->blk->msg) == begin && + nb_get_index(req->blk->msg) == index && + nb_get_length(req->blk->msg) == length)) + break; + if (req != NULL) { btpd_log(BTPD_L_MSG, "received piece(%u,%u,%u) from %p\n", index, begin, length, p); assert(p->nreqs_out > 0); |