Merge pull request #4096 from jianzhiyao/request_context
fix memory leak of request context
This commit is contained in:
		
						commit
						ebc0207909
					
				| @ -327,6 +327,26 @@ func (input *BeegoInput) ResetParams() { | |||||||
| 	input.pvalues = input.pvalues[:0] | 	input.pvalues = input.pvalues[:0] | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // ResetData: reset data | ||||||
|  | func (input *BeegoInput) ResetData() { | ||||||
|  | 	input.dataLock.Lock() | ||||||
|  | 	input.data = nil | ||||||
|  | 	input.dataLock.Unlock() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ResetBody: reset body | ||||||
|  | func (input *BeegoInput) ResetBody() { | ||||||
|  | 	input.RequestBody = []byte{} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Clear: clear all data in input | ||||||
|  | func (input *BeegoInput) Clear() { | ||||||
|  | 	input.ResetParams() | ||||||
|  | 	input.ResetData() | ||||||
|  | 	input.ResetBody() | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Query returns input data item string by a given string. | // Query returns input data item string by a given string. | ||||||
| func (input *BeegoInput) Query(key string) string { | func (input *BeegoInput) Query(key string) string { | ||||||
| 	if val := input.Param(key); val != "" { | 	if val := input.Param(key); val != "" { | ||||||
|  | |||||||
| @ -50,9 +50,15 @@ func NewOutput() *BeegoOutput { | |||||||
| // Reset init BeegoOutput | // Reset init BeegoOutput | ||||||
| func (output *BeegoOutput) Reset(ctx *Context) { | func (output *BeegoOutput) Reset(ctx *Context) { | ||||||
| 	output.Context = ctx | 	output.Context = ctx | ||||||
|  | 	output.Clear() | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Clear: clear all data in output | ||||||
|  | func (output *BeegoOutput) Clear() { | ||||||
| 	output.Status = 0 | 	output.Status = 0 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| // Header sets response header item string via given key. | // Header sets response header item string via given key. | ||||||
| func (output *BeegoOutput) Header(key, val string) { | func (output *BeegoOutput) Header(key, val string) { | ||||||
| 	output.Context.ResponseWriter.Header().Set(key, val) | 	output.Context.ResponseWriter.Header().Set(key, val) | ||||||
|  | |||||||
| @ -319,6 +319,10 @@ func (p *ControllerRegister) GetContext() *beecontext.Context { | |||||||
| 
 | 
 | ||||||
| // GiveBackContext put the ctx into pool so that it could be reuse | // GiveBackContext put the ctx into pool so that it could be reuse | ||||||
| func (p *ControllerRegister) GiveBackContext(ctx *beecontext.Context) { | func (p *ControllerRegister) GiveBackContext(ctx *beecontext.Context) { | ||||||
|  | 	// clear input cached data | ||||||
|  | 	ctx.Input.Clear() | ||||||
|  | 	// clear output cached data | ||||||
|  | 	ctx.Output.Clear() | ||||||
| 	p.pool.Put(ctx) | 	p.pool.Put(ctx) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user