aboutsummaryrefslogtreecommitdiff
path: root/lib/resty/cookie.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/resty/cookie.lua')
-rw-r--r--lib/resty/cookie.lua12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/resty/cookie.lua b/lib/resty/cookie.lua
index a96da60..dfb8f8a 100644
--- a/lib/resty/cookie.lua
+++ b/lib/resty/cookie.lua
@@ -165,9 +165,11 @@ function _M.set(self, cookie)
if set_cookie_type == "string" then
-- only one cookie has been setted
- t[1] = set_cookie
- t[2] = cookie_str
- ngx_header['Set-Cookie'] = t
+ if set_cookie ~= cookie_str then
+ t[1] = set_cookie
+ t[2] = cookie_str
+ ngx_header['Set-Cookie'] = t
+ end
elseif set_cookie_type == "table" then
-- more than one cookies has been setted
local size = #set_cookie
@@ -176,6 +178,10 @@ function _M.set(self, cookie)
-- so create a new table, copy all the values, and then set it back
for i=1, size do
t[i] = ngx_header['Set-Cookie'][i]
+ if t[i] == cookie_str then
+ -- new cookie is duplicated
+ return true
+ end
end
t[size + 1] = cookie_str
ngx_header['Set-Cookie'] = t