]> granicus.if.org Git - transmission/commitdiff
(libT) #1562: 1.40 sends unnecessary `cancel' messages when choked
authorCharles Kerr <charles@transmissionbt.com>
Fri, 5 Dec 2008 01:12:55 +0000 (01:12 +0000)
committerCharles Kerr <charles@transmissionbt.com>
Fri, 5 Dec 2008 01:12:55 +0000 (01:12 +0000)
libtransmission/peer-msgs.c

index 95c412b6a05d15206664144d0b4f10853e8d8e5a..17e98377df50a698d6d4d43ba17521982a5d96ff 100644 (file)
@@ -1012,7 +1012,7 @@ tr_peerMsgsAddRequest( tr_peermsgs *    msgs,
 }
 
 static void
-cancelAllRequestsToPeer( tr_peermsgs * msgs )
+cancelAllRequestsToPeer( tr_peermsgs * msgs, tr_bool sendCancel )
 {
     int                 i;
     struct request_list a = msgs->clientWillAskFor;
@@ -1027,7 +1027,8 @@ cancelAllRequestsToPeer( tr_peermsgs * msgs )
 
     for( i = 0; i < b.count; ++i ) {
         fireCancelledReq( msgs, &b.requests[i] );
-        protocolSendCancel( msgs, &b.requests[i] );
+        if( sendCancel )
+            protocolSendCancel( msgs, &b.requests[i] );
     }
 
     reqListClear( &a );
@@ -1473,8 +1474,7 @@ readBtMessage( tr_peermsgs *     msgs,
             dbgmsg( msgs, "got Choke" );
             msgs->info->clientIsChoked = 1;
             if( !fext )
-                cancelAllRequestsToPeer( msgs );
-            cancelAllRequestsToClient( msgs );
+                cancelAllRequestsToPeer( msgs, FALSE );
             break;
 
         case BT_UNCHOKE: