diff options
| author | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-09-24 18:59:24 +0000 |
|---|---|---|
| committer | Richard Nyberg <rnyberg@murmeldjur.se> | 2005-09-24 18:59:24 +0000 |
| commit | faad18e3681764853dd0a9e2a59d655e6c866b0f (patch) | |
| tree | 20c8a9c07b483c91fdb5973038fce058aa1df31c | |
| parent | aa1fe4b2dd7dd32fa390ff10281139be5adfa2b6 (diff) | |
| download | btpd-faad18e3681764853dd0a9e2a59d655e6c866b0f.tar.gz btpd-faad18e3681764853dd0a9e2a59d655e6c866b0f.zip | |
In the transition to end game it's likely that we'll send an uniterest
message followed by an interest message. Optimize this but not sending those messages in that case. This is better becasue we don't risk to trigger a choke from the receiving peer.
| -rw-r--r-- | btpd/peer.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/btpd/peer.c b/btpd/peer.c index 71bcd64..e3e2d74 100644 --- a/btpd/peer.c +++ b/btpd/peer.c @@ -180,8 +180,13 @@ peer_want(struct peer *p, uint32_t index) assert(p->nwant < p->npieces); p->nwant++; if (p->nwant == 1) { + int unsent = 0; + struct nb_link *nl = BTPDQ_LAST(&p->outq, nb_tq); + if (nl != NULL && nl->nb->type == NB_UNINTEREST) + unsent = peer_unsend(p, nl); + if (!unsent) + peer_send(p, btpd.interest_msg); p->flags |= PF_I_WANT; - peer_send(p, btpd.interest_msg); } } |