mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Call MultipartForm.RemoveAll when request finishes (#19606)
This commit is contained in:
		@@ -256,6 +256,7 @@ func APIContexter() func(http.Handler) http.Handler {
 | 
			
		||||
				},
 | 
			
		||||
				Org: &APIOrganization{},
 | 
			
		||||
			}
 | 
			
		||||
			defer ctx.Close()
 | 
			
		||||
 | 
			
		||||
			ctx.Req = WithAPIContext(WithContext(req, ctx.Context), &ctx)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -75,6 +75,16 @@ type Context struct {
 | 
			
		||||
	Package     *Package
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Close frees all resources hold by Context
 | 
			
		||||
func (ctx *Context) Close() error {
 | 
			
		||||
	var err error
 | 
			
		||||
	if ctx.Req != nil && ctx.Req.MultipartForm != nil {
 | 
			
		||||
		err = ctx.Req.MultipartForm.RemoveAll() // remove the temp files buffered to tmp directory
 | 
			
		||||
	}
 | 
			
		||||
	// TODO: close opened repo, and more
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TrHTMLEscapeArgs runs Tr but pre-escapes all arguments with html.EscapeString.
 | 
			
		||||
// This is useful if the locale message is intended to only produce HTML content.
 | 
			
		||||
func (ctx *Context) TrHTMLEscapeArgs(msg string, args ...string) string {
 | 
			
		||||
@@ -693,6 +703,8 @@ func Contexter() func(next http.Handler) http.Handler {
 | 
			
		||||
					"RunModeIsProd": setting.IsProd,
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
			defer ctx.Close()
 | 
			
		||||
 | 
			
		||||
			// PageData is passed by reference, and it will be rendered to `window.config.pageData` in `head.tmpl` for JavaScript modules
 | 
			
		||||
			ctx.PageData = map[string]interface{}{}
 | 
			
		||||
			ctx.Data["PageData"] = ctx.PageData
 | 
			
		||||
 
 | 
			
		||||
@@ -100,6 +100,7 @@ func PackageContexter() func(next http.Handler) http.Handler {
 | 
			
		||||
				Resp: NewResponse(resp),
 | 
			
		||||
				Data: map[string]interface{}{},
 | 
			
		||||
			}
 | 
			
		||||
			defer ctx.Close()
 | 
			
		||||
 | 
			
		||||
			ctx.Req = WithContext(req, &ctx)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -66,6 +66,8 @@ func PrivateContexter() func(http.Handler) http.Handler {
 | 
			
		||||
					Data: map[string]interface{}{},
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
			defer ctx.Close()
 | 
			
		||||
 | 
			
		||||
			ctx.Req = WithPrivateContext(req, ctx)
 | 
			
		||||
			ctx.Data["Context"] = ctx
 | 
			
		||||
			next.ServeHTTP(ctx.Resp, ctx.Req)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user