mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
fix bug with mutex lock in some threads
This commit is contained in:
@@ -23,7 +23,7 @@ type Reader struct {
|
|||||||
muPreload sync.Mutex
|
muPreload sync.Mutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewReader(file *torrent.File, cache *Cache) *Reader {
|
func newReader(file *torrent.File, cache *Cache) *Reader {
|
||||||
r := new(Reader)
|
r := new(Reader)
|
||||||
r.file = file
|
r.file = file
|
||||||
r.Reader = file.NewReader()
|
r.Reader = file.NewReader()
|
||||||
@@ -89,16 +89,11 @@ func (r *Reader) Close() error {
|
|||||||
r.mu.Lock()
|
r.mu.Lock()
|
||||||
defer r.mu.Unlock()
|
defer r.mu.Unlock()
|
||||||
r.isClosed = true
|
r.isClosed = true
|
||||||
|
|
||||||
r.cache.muReaders.Lock()
|
|
||||||
delete(r.cache.readers, r)
|
|
||||||
r.cache.muReaders.Unlock()
|
|
||||||
|
|
||||||
return r.Reader.Close()
|
return r.Reader.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cache) NewReader(file *torrent.File) *Reader {
|
func (c *Cache) NewReader(file *torrent.File) *Reader {
|
||||||
return NewReader(file, c)
|
return newReader(file, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cache) Readers() int {
|
func (c *Cache) Readers() int {
|
||||||
@@ -112,3 +107,10 @@ func (c *Cache) Readers() int {
|
|||||||
}
|
}
|
||||||
return len(c.readers)
|
return len(c.readers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Cache) CloseReader(r *Reader) {
|
||||||
|
r.cache.muReaders.Lock()
|
||||||
|
r.Close()
|
||||||
|
delete(r.cache.readers, r)
|
||||||
|
r.cache.muReaders.Unlock()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user