diff options
Diffstat (limited to 'weed/server/webdav_server.go')
| -rw-r--r-- | weed/server/webdav_server.go | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/weed/server/webdav_server.go b/weed/server/webdav_server.go index 13ec88d4a..414f19f0d 100644 --- a/weed/server/webdav_server.go +++ b/weed/server/webdav_server.go @@ -323,9 +323,13 @@ func (fs *WebDavFileSystem) Rename(ctx context.Context, oldName, newName string) if err != nil { return os.ErrExist } - if of.IsDir() && !strings.HasSuffix(oldName, "/") { - oldName += "/" - newName += "/" + if of.IsDir() { + if strings.HasSuffix(oldName, "/") { + oldName = strings.TrimRight(oldName, "/") + } + if strings.HasSuffix(newName, "/") { + newName = strings.TrimRight(newName, "/") + } } _, err = fs.stat(ctx, newName) @@ -363,10 +367,10 @@ func (fs *WebDavFileSystem) stat(ctx context.Context, fullFilePath string) (os.F var fi FileInfo entry, err := filer2.GetEntry(ctx, fs, fullFilePath) + if entry == nil { + return nil, os.ErrNotExist + } if err != nil { - if err == filer2.ErrNotFound { - return nil, os.ErrNotExist - } return nil, err } fi.size = int64(filer2.TotalSize(entry.GetChunks())) @@ -401,6 +405,9 @@ func (f *WebDavFile) Write(buf []byte) (int, error) { f.entry, err = filer2.GetEntry(ctx, f.fs, f.name) } + if f.entry == nil { + return 0, err + } if err != nil { return 0, err } @@ -493,6 +500,9 @@ func (f *WebDavFile) Read(p []byte) (readSize int, err error) { if f.entry == nil { f.entry, err = filer2.GetEntry(ctx, f.fs, f.name) } + if f.entry == nil { + return 0, err + } if err != nil { return 0, err } |
