From fb9de35e81a6231edf03b30b3cbc95666aa80430 Mon Sep 17 00:00:00 2001 From: hexxa Date: Sun, 12 Sep 2021 22:27:56 +0800 Subject: [PATCH] fix(files): fix small issues --- src/fs/local/fs.go | 5 +++++ src/handlers/fileshdr/handlers.go | 11 ++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/fs/local/fs.go b/src/fs/local/fs.go index 779d020..783d231 100644 --- a/src/fs/local/fs.go +++ b/src/fs/local/fs.go @@ -25,6 +25,7 @@ type LocalFS struct { opensMtx *sync.RWMutex opensCleanSize int openTTL time.Duration + readersMtx *sync.RWMutex readers map[string]*fileInfo } @@ -47,6 +48,7 @@ func NewLocalFS(root string, defaultPerm uint32, opensLimit, openTTL int) *Local openTTL: time.Duration(openTTL) * time.Second, opensMtx: &sync.RWMutex{}, opensCleanSize: 10, + readersMtx: &sync.RWMutex{}, readers: map[string]*fileInfo{}, // TODO: track readers and close idles } } @@ -307,6 +309,9 @@ func (fs *LocalFS) GetFileReader(path string) (fs.ReadCloseSeeker, error) { return nil, err } + fs.readersMtx.Lock() + defer fs.readersMtx.Unlock() + fs.readers[fullpath] = &fileInfo{ fd: fd, lastAccess: time.Now(), diff --git a/src/handlers/fileshdr/handlers.go b/src/handlers/fileshdr/handlers.go index 0e71d1b..9e83e16 100644 --- a/src/handlers/fileshdr/handlers.go +++ b/src/handlers/fileshdr/handlers.go @@ -158,7 +158,13 @@ func (h *FileHandlers) Create(c *gin.Context) { err = h.deps.FS().Create(tmpFilePath) if err != nil { if os.IsExist(err) { - c.JSON(q.ErrResp(c, 304, err)) + // avoid adding file size more than once + err = h.deps.Users().SetUsed(userIDInt, false, req.FileSize) + if err != nil { + c.JSON(q.ErrResp(c, 500, err)) + } else { + c.JSON(q.ErrResp(c, 304, err)) + } } else { c.JSON(q.ErrResp(c, 500, err)) } @@ -728,6 +734,9 @@ func (h *FileHandlers) ListUploadings(c *gin.Context) { c.JSON(q.ErrResp(c, 500, err)) return } + if infos == nil { + infos = []*UploadInfo{} + } c.JSON(200, &ListUploadingsResp{UploadInfos: infos}) }