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