summaryrefslogtreecommitdiffabout
authorMichael Krelin <hacker@klever.net>2005-07-19 13:08:58 (UTC)
committer Michael Krelin <hacker@klever.net>2005-07-19 13:08:58 (UTC)
commitdb69589bdc32c60b1fce6700a35d4126058bf7bc (patch) (unidiff)
tree34727675eaeb4210436a9b61119c7484dbc0cd97
parent9cc67ea5af191d5bc1f26506c35d8387a05361c2 (diff)
downloadkingate-db69589bdc32c60b1fce6700a35d4126058bf7bc.zip
kingate-db69589bdc32c60b1fce6700a35d4126058bf7bc.tar.gz
kingate-db69589bdc32c60b1fce6700a35d4126058bf7bc.tar.bz2
turned cookies into multimap
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
@@ -304,13 +304,12 @@ namespace kingate {
304 /** 304 /**
305 * Retrieve the SERVER_SOFTWARE meta-variable (see RFC3875) 305 * Retrieve the SERVER_SOFTWARE meta-variable (see RFC3875)
306 * @return the name and version of server software. 306 * @return the name and version of server software.
307 */ 307 */
308 const string& server_software() const; 308 const string& server_software() const;
309 309
310 private:
311 /** 310 /**
312 * Parse the query string, putting the parameters into the map 311 * Parse the query string, putting the parameters into the map
313 * specified. 312 * specified.
314 * @param q the query string. 313 * @param q the query string.
315 * @param p destination parameters map. 314 * @param p destination parameters map.
316 */ 315 */
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
@@ -252,25 +252,25 @@ namespace kingate {
252 string set_cookie_header() const; 252 string set_cookie_header() const;
253 }; 253 };
254 254
255 /** 255 /**
256 * Cookies container class. 256 * Cookies container class.
257 */ 257 */
258 class cookies_t : public map<string,cookie> { 258 class cookies_t : public multimap<string,cookie> {
259 public: 259 public:
260 260
261 cookies_t() { } 261 cookies_t() { }
262 /** 262 /**
263 * @param s 'Cookie:' HTTP header contents to parse. 263 * @param s 'Cookie:' HTTP header contents to parse.
264 */ 264 */
265 cookies_t(const string& s) { parse_cookies(s); } 265 cookies_t(const string& s) { parse_cookies(s); }
266 266
267 /** 267 /**
268 * @param c cookie to set. 268 * @param c cookie to set.
269 */ 269 */
270 void set_cookie(const cookie& c) { (*this)[c.get_name()]=c; } 270 void set_cookie(const cookie& c);
271 /** 271 /**
272 * @param n cookie name to remove. 272 * @param n cookie name to remove.
273 */ 273 */
274 void unset_cookie(const key_type& n) { erase(n); } 274 void unset_cookie(const key_type& n) { erase(n); }
275 /** 275 /**
276 * @param n cookie name. 276 * @param n cookie name.
diff --git a/src/cookies.cc b/src/cookies.cc
index 40a0c8b..1ee4f7c 100644
--- a/src/cookies.cc
+++ b/src/cookies.cc
@@ -180,12 +180,16 @@ namespace kingate {
180 rv += "; "+i->first+"="+i->second; 180 rv += "; "+i->first+"="+i->second;
181 } 181 }
182 } 182 }
183 return rv; 183 return rv;
184 } 184 }
185 185
186 void cookies_t::set_cookie(const cookie& c) {
187 insert(value_type(c.get_name(),c));
188 }
189
186 bool cookies_t::has_cookie(const key_type& n) const { 190 bool cookies_t::has_cookie(const key_type& n) const {
187 return find(n)!=end(); 191 return find(n)!=end();
188 } 192 }
189 193
190 const cookie& cookies_t::get_cookie(const key_type& n) const { 194 const cookie& cookies_t::get_cookie(const key_type& n) const {
191 const_iterator i=find(n); 195 const_iterator i=find(n);
@@ -231,12 +235,11 @@ namespace kingate {
231 v = s; 235 v = s;
232 nsp = v.find_last_not_of(" \t"); 236 nsp = v.find_last_not_of(" \t");
233 if(nsp==string::npos) 237 if(nsp==string::npos)
234 v.erase(); 238 v.erase();
235 else 239 else
236 v.erase(nsp+1); 240 v.erase(nsp+1);
237 cookie& c = (*this)[n]; 241 set_cookie(cookie(n,v));
238 c.set_name(n); c.set_value(v);
239 } 242 }
240 } 243 }
241 244
242} 245}