aboutsummaryrefslogtreecommitdiff
path: root/args.go
diff options
context:
space:
mode:
authorGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-03-10 17:22:59 +0200
committerGravatar Aliaksandr Valialkin <valyala@gmail.com> 2016-03-10 17:22:59 +0200
commit38356e216e31bf735e1fe64cc5bc3514c9c4d463 (patch)
tree0cb4bcd36a7c8e6adc20d0782b9d739c64b73705 /args.go
parentAdded anti-copy guard to FS type (diff)
downloadfasthttp-38356e216e31bf735e1fe64cc5bc3514c9c4d463.tar.gz
fasthttp-38356e216e31bf735e1fe64cc5bc3514c9c4d463.tar.bz2
fasthttp-38356e216e31bf735e1fe64cc5bc3514c9c4d463.zip
Issue #64: properly delete header values via Del call
Diffstat (limited to 'args.go')
-rw-r--r--args.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/args.go b/args.go
index d61ffd6..bf9ffa2 100644
--- a/args.go
+++ b/args.go
@@ -140,7 +140,7 @@ func (a *Args) Del(key string) {
// DelBytes deletes argument with the given key from query args.
func (a *Args) DelBytes(key []byte) {
- a.args = delArg(a.args, key)
+ a.args = delAllArgs(a.args, key)
}
// Set sets 'key=value' argument.
@@ -286,6 +286,16 @@ func copyArgs(dst, src []argsKV) []argsKV {
return dst
}
+func delAllArgs(args []argsKV, key []byte) []argsKV {
+ for {
+ argsNew := delArg(args, key)
+ if len(argsNew) == len(args) {
+ return args
+ }
+ args = argsNew
+ }
+}
+
func delArg(args []argsKV, key []byte) []argsKV {
for i, n := 0, len(args); i < n; i++ {
kv := &args[i]