reader.go | 12 +----------- diff --git a/reader.go b/reader.go index 0d39522f91bfd4e42b6acd3104e99f0a8943cb5b..d21231bc6b3325a7a239201127bf31f00ff1b49c 100644 --- a/reader.go +++ b/reader.go @@ -36,8 +36,6 @@ t *Torrent responsive bool // Adjust the read/seek window to handle Readers locked to File extents and the like. offset, length int64 - // Ensure operations that change the position are exclusive, like Read() and Seek(). - opMu sync.Mutex // Required when modifying pos and readahead, or reading them without opMu. mu sync.Locker @@ -71,11 +69,9 @@ } func (r *reader) SetReadahead(readahead int64) { r.mu.Lock() + defer r.mu.Unlock() r.readahead = readahead r.readaheadFunc = nil - r.mu.Unlock() - r.t.cl.lock() - defer r.t.cl.unlock() r.posChanged() } @@ -131,10 +127,6 @@ return r.ReadContext(context.Background(), b) } func (r *reader) ReadContext(ctx context.Context, b []byte) (n int, err error) { - // Hmmm, if a Read gets stuck, this means you can't change position for other purposes. That - // seems reasonable, but unusual. - r.opMu.Lock() - defer r.opMu.Unlock() if len(b) > 0 { r.reading = true // TODO: Rework reader piece priorities so we don't have to push updates in to the Client @@ -272,8 +264,6 @@ r.t.readerPosChanged(from, to) } func (r *reader) Seek(off int64, whence int) (newPos int64, err error) { - r.opMu.Lock() - defer r.opMu.Unlock() r.mu.Lock() defer r.mu.Unlock() newPos, err = func() (int64, error) {