]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Some fixes to pending request accounting
authorMatt Joiner <anacrolix@gmail.com>
Tue, 12 Oct 2021 00:58:46 +0000 (11:58 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 19 Oct 2021 03:08:56 +0000 (14:08 +1100)
peerconn.go

index e00006ffcb365380903a22bc7fcc60661d458fae..e683be5c46f1d876b8ad365bf8a917f408a07e49 100644 (file)
@@ -1035,7 +1035,9 @@ func (c *PeerConn) mainReadLoop() (err error) {
                }
                switch msg.Type {
                case pp.Choke:
-                       c.peerChoking = true
+                       if c.peerChoking {
+                               break
+                       }
                        if !c.fastEnabled() {
                                c.deleteAllRequests()
                        } else {
@@ -1046,6 +1048,7 @@ func (c *PeerConn) mainReadLoop() (err error) {
                                        return true
                                })
                        }
+                       c.peerChoking = true
                        // We can then reset our interest.
                        c.updateRequests("choked")
                        c.updateExpectingChunks()
@@ -1132,7 +1135,7 @@ func (c *PeerConn) mainReadLoop() (err error) {
                                        if r >= t.pieceRequestIndexOffset(pieceIndex+1) {
                                                break
                                        }
-                                       c.t.pendingRequests.Inc(i.Next())
+                                       c.t.pendingRequests.Inc(r)
                                }
                        }
                        c.updateRequests("PeerConn.mainReadLoop allowed fast")