From e3bcafc59c2b2e60863c9a651cbe9b8f33932e52 Mon Sep 17 00:00:00 2001 From: Curt Tudor Date: Wed, 1 Nov 2023 11:50:03 -0600 Subject: [PATCH] fix: handle duplicate Set-Cookie headers from Icinga (#120) --- src/context/context.js | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/context/context.js b/src/context/context.js index 6bab736..fd6618b 100644 --- a/src/context/context.js +++ b/src/context/context.js @@ -2043,11 +2043,8 @@ class ZitiContext extends EventEmitter { let expires; let httpOnly = false; - // let zitiCookies = await ls.getWithExpiry(zitiConstants.get().ZITI_COOKIES); - // if (isNull(zitiCookies)) { - // zitiCookies = {} - // } - + let condensedCookieArray = new Map(); + for (let i = 0; i < cookieArray.length; i++) { let cookie = cookieArray[i]; @@ -2058,10 +2055,10 @@ class ZitiContext extends EventEmitter { let parts = value.split(";"); for (let j = 0; j < parts.length; j++) { let part = parts[j].trim(); - if ( part.startsWith("Path") ) { + if ( part.trim().toLowerCase().startsWith("path") ) { cookiePath = part.substring(part.indexOf("=") + 1); } - else if ( part.startsWith("Expires") ) { + else if ( part.trim().toLowerCase().startsWith("expires") ) { expires = new Date( part.substring(part.indexOf("=") + 1) ); } else if ( part.startsWith("HttpOnly") ) { @@ -2069,14 +2066,14 @@ class ZitiContext extends EventEmitter { } } - - // zitiCookies[name] = cookie_value; - - // await ls.setWithExpiry(zitiConstants.get().ZITI_COOKIES, zitiCookies, new Date(8640000000000000)); - - Cookies.set(name, cookie_value, { expires: expires, path: cookiePath}); + condensedCookieArray.set(name, {name: name, cookie_value: cookie_value, expires: expires, cookiePath: cookiePath}); } } + + function setCondensedCookies(value, key) { + Cookies.set(value.name, value.cookie_value, { expires: value.expires, path: value.cookiePath}); + } + condensedCookieArray.forEach(setCondensedCookies); } } }