connsWithAllPieces map[*Peer]struct{}
- requestState []requestState
+ requestState map[RequestIndex]requestState
// Chunks we've written to since the corresponding piece was last checked.
dirtyChunks typedRoaring.Bitmap[RequestIndex]
}
func (t *Torrent) length() int64 {
- return t._length.Value()
+ return t._length.Value
}
func (t *Torrent) selectivePieceAvailabilityFromPeers(i pieceIndex) (count int) {
func (t *Torrent) onSetInfo() {
t.pieceRequestOrder = rand.Perm(t.numPieces())
t.initPieceRequestOrder()
- MakeSliceWithLength(&t.requestState, t.numChunks())
MakeSliceWithLength(&t.requestPieceStates, t.numPieces())
for i := range t.pieces {
p := &t.pieces[i]
t.cl.event.Broadcast()
close(t.gotMetainfoC)
t.updateWantPeersEvent()
+ t.requestState = make(map[RequestIndex]requestState)
t.tryCreateMorePieceHashers()
t.iterPeers(func(p *Peer) {
p.onGotInfo(t.info)
t.iterPeers(func(p *Peer) {
remoteIp := p.remoteIp()
if remoteIp == nil {
- if p.bannableAddr.Ok() {
+ if p.bannableAddr.Ok {
t.logger.WithDefaultLevel(log.Debug).Printf("can't get remote ip for peer %v", p)
}
return
}
// TODO: This is a check that an old invariant holds. It can be removed after some testing.
//delete(t.pendingRequests, r)
- var zeroRequestState requestState
- if t.requestState[r] != zeroRequestState {
+ if _, ok := t.requestState[r]; ok {
panic("expected request state to be gone")
}
return p