about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard Nyberg <rnyberg@murmeldjur.se>2005-10-08 10:00:30 +0000
committerRichard Nyberg <rnyberg@murmeldjur.se>2005-10-08 10:00:30 +0000
commit93053ce34a3480fc38b98ce0b989938a3ff955c6 (patch)
treebb5580bf1b328546fc22aa4a9ffd24e51ea89bf9
parenta8817eee1a05bab118179ea1c13eba24cb4a4c50 (diff)
downloadbtpd-93053ce34a3480fc38b98ce0b989938a3ff955c6.tar.gz
btpd-93053ce34a3480fc38b98ce0b989938a3ff955c6.zip
Remove unsent requests from the write queue when we receive a choke.
-rw-r--r--btpd/peer.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/btpd/peer.c b/btpd/peer.c
index 0cfbc0a..deb1af3 100644
--- a/btpd/peer.c
+++ b/btpd/peer.c
@@ -335,6 +335,13 @@ peer_on_choke(struct peer *p)
     else {
 	p->flags |= PF_P_CHOKE;
 	cm_on_choke(p);
+	struct nb_link *nl = BTPDQ_FIRST(&p->outq);
+	while (nl != NULL) {
+	    struct nb_link *next = BTPDQ_NEXT(nl, entry);
+	    if (nl->nb->type == NB_REQUEST)
+		peer_unsend(p, nl);
+	    nl = next;
+	}
     }
 }