mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00: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) | ||||
|   | ||||
| @@ -38,6 +38,7 @@ func MockContext(t *testing.T, path string) *context.Context { | ||||
| 		Resp:   context.NewResponse(resp), | ||||
| 		Locale: &mockLocale{}, | ||||
| 	} | ||||
| 	defer ctx.Close() | ||||
|  | ||||
| 	requestURL, err := url.Parse(path) | ||||
| 	assert.NoError(t, err) | ||||
|   | ||||
| @@ -37,6 +37,8 @@ func createContext(req *http.Request) (*context.Context, *httptest.ResponseRecor | ||||
| 		Render: rnd, | ||||
| 		Data:   make(map[string]interface{}), | ||||
| 	} | ||||
| 	defer c.Close() | ||||
|  | ||||
| 	return c, resp | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -79,6 +79,8 @@ func Init(next http.Handler) http.Handler { | ||||
| 				"PasswordHashAlgorithms": user_model.AvailableHashAlgorithms, | ||||
| 			}, | ||||
| 		} | ||||
| 		defer ctx.Close() | ||||
|  | ||||
| 		ctx.Req = context.WithContext(req, &ctx) | ||||
| 		next.ServeHTTP(resp, ctx.Req) | ||||
| 	}) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 wxiaoguang
					wxiaoguang