about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--btpd/download_subr.c4
-rw-r--r--btpd/peer.c2
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);