From e7ae5e8ee033fb6d591f71a5454002cb7249421e Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Thu, 14 Jun 2018 09:49:01 +0100 Subject: [PATCH] webdav: ensure we call MKCOL with a URL with a trailing / #2350 This is an attempt to fix rclone and qnap interop. --- backend/webdav/webdav.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/webdav/webdav.go b/backend/webdav/webdav.go index a08d8975f..91b1320e7 100644 --- a/backend/webdav/webdav.go +++ b/backend/webdav/webdav.go @@ -542,6 +542,11 @@ func (f *Fs) PutStream(in io.Reader, src fs.ObjectInfo, options ...fs.OpenOption // mkParentDir makes the parent of the native path dirPath if // necessary and any directories above that func (f *Fs) mkParentDir(dirPath string) error { + // defer log.Trace(dirPath, "")("") + // chop off trailing / if it exists + if strings.HasSuffix(dirPath, "/") { + dirPath = dirPath[:len(dirPath)-1] + } parent := path.Dir(dirPath) if parent == "." { parent = "" @@ -551,10 +556,15 @@ func (f *Fs) mkParentDir(dirPath string) error { // mkdir makes the directory and parents using native paths func (f *Fs) mkdir(dirPath string) error { + // defer log.Trace(dirPath, "")("") // We assume the root is already ceated if dirPath == "" { return nil } + // Collections must end with / + if !strings.HasSuffix(dirPath, "/") { + dirPath += "/" + } opts := rest.Opts{ Method: "MKCOL", Path: dirPath,