connection.go | 3 ++- metainfo/info.go | 5 ++++- diff --git a/connection.go b/connection.go index 7d94f08b95aa9c6b95f5dcfe65c48b9f72db9c41..92c72f5733d63ea59109e61736a58f9080eca64f 100644 --- a/connection.go +++ b/connection.go @@ -1053,7 +1053,8 @@ // Need to record that it hasn't been written yet, before we attempt to do // anything with it. piece.incrementPendingWrites() - // Record that we have the chunk. + // Record that we have the chunk, so we aren't trying to download it while + // waiting for it to be written to storage. piece.unpendChunkIndex(chunkIndex(req.chunkSpec, t.chunkSize)) // Cancel pending requests for this chunk. diff --git a/metainfo/info.go b/metainfo/info.go index a7e23a7f07843360a2f92eff81bd278d86305ca4..77cb9eba4ad97a8081547278f84af215586ec9eb 100644 --- a/metainfo/info.go +++ b/metainfo/info.go @@ -66,6 +66,8 @@ } return } +// Concatenates all the files in the torrent into w. open is a function that +// gets at the contents of the given file. func (info *Info) writeFiles(w io.Writer, open func(fi FileInfo) (io.ReadCloser, error)) error { for _, fi := range info.UpvertedFiles() { r, err := open(fi) @@ -81,7 +83,8 @@ } return nil } -// Set info.Pieces by hashing info.Files. +// Sets Pieces (the block of piece hashes in the Info) by using the passed +// function to get at the torrent data. func (info *Info) GeneratePieces(open func(fi FileInfo) (io.ReadCloser, error)) error { if info.PieceLength == 0 { return errors.New("piece length must be non-zero")