mirror of https://github.com/Xhofe/alist
				
				
				
			fix: link cache not deleted after overwriting file (close #4852)
							parent
							
								
									e2ca06dcca
								
							
						
					
					
						commit
						0c1acd72ca
					
				|  | @ -25,6 +25,7 @@ type Link struct { | |||
| 	Status     int            // status maybe 200 or 206, etc
 | ||||
| 	FilePath   *string        // local file, return the filepath
 | ||||
| 	Expiration *time.Duration // url expiration time
 | ||||
| 	IPCacheKey bool           // add ip to cache key
 | ||||
| 	//Handle     func(w http.ResponseWriter, r *http.Request) error `json:"-"` // custom handler
 | ||||
| 	Writer WriterFunc `json:"-"` // custom writer
 | ||||
| } | ||||
|  |  | |||
|  | @ -243,7 +243,7 @@ func Link(ctx context.Context, storage driver.Driver, path string, args model.Li | |||
| 	if file.IsDir() { | ||||
| 		return nil, nil, errors.WithStack(errs.NotFile) | ||||
| 	} | ||||
| 	key := Key(storage, path) + ":" + args.IP | ||||
| 	key := Key(storage, path) | ||||
| 	if link, ok := linkCache.Get(key); ok { | ||||
| 		return link, file, nil | ||||
| 	} | ||||
|  | @ -253,6 +253,9 @@ func Link(ctx context.Context, storage driver.Driver, path string, args model.Li | |||
| 			return nil, errors.Wrapf(err, "failed get link") | ||||
| 		} | ||||
| 		if link.Expiration != nil { | ||||
| 			if link.IPCacheKey { | ||||
| 				key = key + ":" + args.IP | ||||
| 			} | ||||
| 			linkCache.Set(key, link, cache.WithEx[*model.Link](*link.Expiration)) | ||||
| 		} | ||||
| 		return link, nil | ||||
|  | @ -563,6 +566,9 @@ func Put(ctx context.Context, storage driver.Driver, dstDirPath string, file *mo | |||
| 			err := Remove(ctx, storage, tempPath) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} else { | ||||
| 				key := Key(storage, stdpath.Join(dstDirPath, file.GetName())) | ||||
| 				linkCache.Del(key) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Andy Hsu
						Andy Hsu