summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/kingate/cgi_gateway.h1
-rw-r--r--include/kingate/cookies.h4
-rw-r--r--src/cookies.cc7
3 files changed, 7 insertions, 5 deletions
diff --git a/include/kingate/cgi_gateway.h b/include/kingate/cgi_gateway.h
index a26b0ae..087f7d0 100644
--- a/include/kingate/cgi_gateway.h
+++ b/include/kingate/cgi_gateway.h
@@ -306,9 +306,8 @@ namespace kingate {
* @return the name and version of server software.
*/
const string& server_software() const;
- private:
/**
* Parse the query string, putting the parameters into the map
* specified.
* @param q the query string.
diff --git a/include/kingate/cookies.h b/include/kingate/cookies.h
index 83ef0c6..a1e813c 100644
--- a/include/kingate/cookies.h
+++ b/include/kingate/cookies.h
@@ -254,9 +254,9 @@ namespace kingate {
/**
* Cookies container class.
*/
- class cookies_t : public map<string,cookie> {
+ class cookies_t : public multimap<string,cookie> {
public:
cookies_t() { }
/**
@@ -266,9 +266,9 @@ namespace kingate {
/**
* @param c cookie to set.
*/
- void set_cookie(const cookie& c) { (*this)[c.get_name()]=c; }
+ void set_cookie(const cookie& c);
/**
* @param n cookie name to remove.
*/
void unset_cookie(const key_type& n) { erase(n); }
diff --git a/src/cookies.cc b/src/cookies.cc
index 40a0c8b..1ee4f7c 100644
--- a/src/cookies.cc
+++ b/src/cookies.cc
@@ -182,8 +182,12 @@ namespace kingate {
}
return rv;
}
+ void cookies_t::set_cookie(const cookie& c) {
+ insert(value_type(c.get_name(),c));
+ }
+
bool cookies_t::has_cookie(const key_type& n) const {
return find(n)!=end();
}
@@ -233,10 +237,9 @@ namespace kingate {
if(nsp==string::npos)
v.erase();
else
v.erase(nsp+1);
- cookie& c = (*this)[n];
- c.set_name(n); c.set_value(v);
+ set_cookie(cookie(n,v));
}
}
}