mirror of https://github.com/Xhofe/alist
fix: infinite loop if new multi-level folder (close #1661)
parent
53e08e75fe
commit
2de0da87fa
|
@ -8,6 +8,7 @@ import (
|
|||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/alist-org/alist/v3/drivers/base"
|
||||
"github.com/alist-org/alist/v3/internal/driver"
|
||||
|
@ -90,6 +91,9 @@ func (d *Quark) MakeDir(ctx context.Context, parentDir model.Obj, dirName string
|
|||
_, err := d.request("/file", http.MethodPost, func(req *resty.Request) {
|
||||
req.SetBody(data)
|
||||
}, nil)
|
||||
if err == nil {
|
||||
time.Sleep(time.Second)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -181,6 +181,7 @@ func MakeDir(ctx context.Context, storage driver.Driver, path string) error {
|
|||
if storage.Config().CheckStatus && storage.GetStorage().Status != WORK {
|
||||
return errors.Errorf("storage not init: %s", storage.GetStorage().Status)
|
||||
}
|
||||
path = utils.StandardizePath(path)
|
||||
// check if dir exists
|
||||
f, err := Get(ctx, storage, path)
|
||||
if err != nil {
|
||||
|
@ -195,7 +196,11 @@ func MakeDir(ctx context.Context, storage driver.Driver, path string) error {
|
|||
if err != nil {
|
||||
return errors.WithMessagef(err, "failed to get parent dir [%s]", parentPath)
|
||||
}
|
||||
return errors.WithStack(storage.MakeDir(ctx, parentDir, dirName))
|
||||
err = storage.MakeDir(ctx, parentDir, dirName)
|
||||
if err == nil {
|
||||
ClearCache(storage, parentPath)
|
||||
}
|
||||
return errors.WithStack(err)
|
||||
} else {
|
||||
return errors.WithMessage(err, "failed to check if dir exists")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue