diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-05-03 14:12:51 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-05-03 14:12:51 -0700 |
| commit | f0f981e7c8bd74f3df277539407bcb6b6a483050 (patch) | |
| tree | e2a16a3d8242be2d13298c73403a3b05da97f7c4 /weed/server/webdav_server.go | |
| parent | bfbecd7253e69d3aa8e4d1c3897051b0f100bd57 (diff) | |
| download | seaweedfs-f0f981e7c8bd74f3df277539407bcb6b6a483050.tar.xz seaweedfs-f0f981e7c8bd74f3df277539407bcb6b6a483050.zip | |
webdav: fix directory renaming
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 } |
