Bug 577360 – handle cookies with same name but different path
authorDan Winship <danw@src.gnome.org>
Fri, 3 Apr 2009 14:14:07 +0000 (14:14 +0000)
committerDan Winship <danw@src.gnome.org>
Fri, 3 Apr 2009 14:14:07 +0000 (14:14 +0000)
* libsoup/soup-cookie-jar.c (soup_cookie_jar_add_cookie): check
both name and path when matching cookies; "foo=one; path=/bar"
should not replace "foo=two; path=/". They are separate cookies.

Reported by Alexander V. Butenko.

svn path=/trunk/; revision=1262

ChangeLog
libsoup/soup-cookie-jar.c

index 119057f..f40fdcc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2009-04-03  Dan Winship  <danw@gnome.org>
+
+       Bug 577360 – handle cookies with same name but different path
+
+       * libsoup/soup-cookie-jar.c (soup_cookie_jar_add_cookie): check
+       both name and path when matching cookies; "foo=one; path=/bar"
+       should not replace "foo=two; path=/". They are separate cookies.
+
+       Reported by Alexander V. Butenko.
+
 2009-04-02  Dan Winship  <danw@gnome.org>
 
        Bug 577630 – libsoup should ignore broken Content-Type headers
index bb0dca5..2c9e3e1 100644 (file)
@@ -345,7 +345,8 @@ soup_cookie_jar_add_cookie (SoupCookieJar *jar, SoupCookie *cookie)
        old_cookies = g_hash_table_lookup (priv->domains, cookie->domain);
        for (oc = old_cookies; oc; oc = oc->next) {
                old_cookie = oc->data;
-               if (!strcmp (cookie->name, old_cookie->name)) {
+               if (!strcmp (cookie->name, old_cookie->name) &&
+                   !g_strcmp0 (cookie->path, old_cookie->path)) {
                        if (cookie->expires && soup_date_is_past (cookie->expires)) {
                                /* The new cookie has an expired date,
                                 * this is the way the the server has