mirror of
https://github.com/astaxie/beego.git
synced 2024-12-22 16:50:49 +00:00
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]
|
||||
}
|
||||
|
||||
// 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.
|
||||
func (input *BeegoInput) Query(key string) string {
|
||||
if val := input.Param(key); val != "" {
|
||||
|
@ -50,9 +50,15 @@ func NewOutput() *BeegoOutput {
|
||||
// Reset init BeegoOutput
|
||||
func (output *BeegoOutput) Reset(ctx *Context) {
|
||||
output.Context = ctx
|
||||
output.Clear()
|
||||
}
|
||||
|
||||
// Clear: clear all data in output
|
||||
func (output *BeegoOutput) Clear() {
|
||||
output.Status = 0
|
||||
}
|
||||
|
||||
|
||||
// Header sets response header item string via given key.
|
||||
func (output *BeegoOutput) Header(key, val string) {
|
||||
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
|
||||
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)
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user