aboutsummaryrefslogtreecommitdiff
path: root/userdata.go
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-05 12:50:58 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-02-05 12:50:58 +0200
commiteafcb74ce5af1c198f9446c2ec3511169e0ebb14 (patch)
tree91cdb49a7e2f1eb845f1af7d96c446a8923fb81c /userdata.go
parentclient: use TLS session cache by default (diff)
downloadfasthttp-eafcb74ce5af1c198f9446c2ec3511169e0ebb14.tar.gz
fasthttp-eafcb74ce5af1c198f9446c2ec3511169e0ebb14.tar.bz2
fasthttp-eafcb74ce5af1c198f9446c2ec3511169e0ebb14.zip
Call Close on user values stored via RequestCtx.SetUserValue if these values implement io.Closer
Diffstat (limited to 'userdata.go')
-rw-r--r--userdata.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/userdata.go b/userdata.go
index ecc343e..a99ec5d 100644
--- a/userdata.go
+++ b/userdata.go
@@ -1,5 +1,9 @@
package fasthttp
+import (
+ "io"
+)
+
type userDataKV struct {
key []byte
value interface{}
@@ -55,5 +59,13 @@ func (d *userData) GetBytes(key []byte) interface{} {
}
func (d *userData) Reset() {
+ args := *d
+ n := len(args)
+ for i := 0; i < n; i++ {
+ v := args[i].value
+ if vc, ok := v.(io.Closer); ok {
+ vc.Close()
+ }
+ }
*d = (*d)[:0]
}