torrent-piece-request-order.go | 12 ++++++++++++ torrent.go | 3 +++ torrent_test.go | 1 + diff --git a/torrent-piece-request-order.go b/torrent-piece-request-order.go index 7b1ef97855b2cf66225b5b383b86c9478eec2d40..86c9839893b313a52e7c201c5e24af6293864bfb 100644 --- a/torrent-piece-request-order.go +++ b/torrent-piece-request-order.go @@ -5,6 +5,9 @@ request_strategy "github.com/anacrolix/torrent/request-strategy" ) func (t *Torrent) updatePieceRequestOrder(pieceIndex int) { + if t.storage == nil { + return + } t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()].Update( t.pieceRequestOrderKey(pieceIndex), t.requestStrategyPieceOrderState(pieceIndex)) @@ -18,6 +21,9 @@ return t.storage.Capacity } func (t *Torrent) deletePieceRequestOrder() { + if t.storage == nil { + return + } cpro := t.cl.pieceRequestOrder key := t.clientPieceRequestOrderKey() pro := cpro[key] @@ -30,6 +36,9 @@ } } func (t *Torrent) initPieceRequestOrder() { + if t.storage == nil { + return + } if t.cl.pieceRequestOrder == nil { t.cl.pieceRequestOrder = make(map[interface{}]*request_strategy.PieceRequestOrder) } @@ -41,6 +50,9 @@ } } func (t *Torrent) addRequestOrderPiece(i int) { + if t.storage == nil { + return + } t.cl.pieceRequestOrder[t.clientPieceRequestOrderKey()].Add( t.pieceRequestOrderKey(i), t.requestStrategyPieceOrderState(i)) diff --git a/torrent.go b/torrent.go index 5c8dca25d58db702d5eba5e4cb5c0b663c565d44..9db3a79434fa0d133ac804c150252b537e054476 100644 --- a/torrent.go +++ b/torrent.go @@ -243,6 +243,9 @@ return t._completedPieces.Contains(bitmap.BitIndex(piece)) } func (t *Torrent) pieceCompleteUncached(piece pieceIndex) storage.Completion { + if t.storage == nil { + return storage.Completion{Complete: false, Ok: true} + } return t.pieces[piece].Storage().Completion() } diff --git a/torrent_test.go b/torrent_test.go index 2b96f19157421ebab0c5eb8979bd8b44bb4e2774..38ea3d868499ff5541737da3a4091a4490e9fcc2 100644 --- a/torrent_test.go +++ b/torrent_test.go @@ -89,6 +89,7 @@ Pieces: make([]byte, metainfo.HashSize*numPieces), PieceLength: pieceLength, Length: pieceLength * numPieces, })) + t.onSetInfo() assert.EqualValues(b, 13410, t.numPieces()) for i := 0; i < 7; i += 1 { r := t.NewReader()