From 4200059b9d52ab6468273f0f38f3cdc507e3f73e Mon Sep 17 00:00:00 2001 From: YouROK <8yourok8@mail.ru> Date: Tue, 6 Apr 2021 10:42:55 +0300 Subject: [PATCH] revert --- server/torr/storage/torrstor/piece.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/torr/storage/torrstor/piece.go b/server/torr/storage/torrstor/piece.go index 68fa28d..f5ce3d7 100644 --- a/server/torr/storage/torrstor/piece.go +++ b/server/torr/storage/torrstor/piece.go @@ -3,6 +3,7 @@ package torrstor import ( "errors" "io" + "sync" "time" "github.com/anacrolix/torrent" @@ -19,10 +20,14 @@ type Piece struct { accessed int64 buffer []byte + mu sync.RWMutex cache *Cache } func (p *Piece) WriteAt(b []byte, off int64) (n int, err error) { + p.mu.Lock() + defer p.mu.Unlock() + if p.buffer == nil { go p.cache.cleanPieces() p.buffer = make([]byte, p.cache.pieceLength, p.cache.pieceLength) @@ -34,6 +39,9 @@ func (p *Piece) WriteAt(b []byte, off int64) (n int, err error) { } func (p *Piece) ReadAt(b []byte, off int64) (n int, err error) { + p.mu.RLock() + defer p.mu.RUnlock() + size := len(b) if size+int(off) > len(p.buffer) { size = len(p.buffer) - int(off) @@ -76,6 +84,8 @@ func (p *Piece) Completion() storage.Completion { } func (p *Piece) Release() { + p.mu.Lock() + defer p.mu.Unlock() if p.buffer != nil { p.buffer = nil }