}
                switch msg.Type {
                case pp.Choke:
-                       c.peerChoking = true
+                       if c.peerChoking {
+                               break
+                       }
                        if !c.fastEnabled() {
                                c.deleteAllRequests()
                        } else {
                                        return true
                                })
                        }
+                       c.peerChoking = true
                        // We can then reset our interest.
                        c.updateRequests("choked")
                        c.updateExpectingChunks()
                                        if r >= t.pieceRequestIndexOffset(pieceIndex+1) {
                                                break
                                        }
-                                       c.t.pendingRequests.Inc(i.Next())
+                                       c.t.pendingRequests.Inc(r)
                                }
                        }
                        c.updateRequests("PeerConn.mainReadLoop allowed fast")