[Xfce4-commits] <midori:master> Only update expiry of cookies if higher than maximum

Christian Dywan noreply at xfce.org
Sun Oct 3 07:18:02 CEST 2010


Updating branch refs/heads/master
         to 28eb039ec053687b56dbea83aefc556556980d02 (commit)
       from 3c7d4800bc84530955ac0d4c35455661b690bbfb (commit)

commit 28eb039ec053687b56dbea83aefc556556980d02
Author: Christian Dywan <christian at twotoasts.de>
Date:   Sun Oct 3 06:13:55 2010 +0200

    Only update expiry of cookies if higher than maximum
    
    Also assume 0 days to really mean 1 hour, and set the
    maximum age accordingly. Otherwise SoupCookie thinks
    that these cookies expire immediately.

 katze/katze-http-cookies.c |   31 +++++++++++++++++++++----------
 1 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/katze/katze-http-cookies.c b/katze/katze-http-cookies.c
index dc33efc..9a38d74 100644
--- a/katze/katze-http-cookies.c
+++ b/katze/katze-http-cookies.c
@@ -247,8 +247,6 @@ cookie_jar_changed_cb (SoupCookieJar* jar,
 
     if (new_cookie)
     {
-        FILE *out;
-
         settings = g_object_get_data (G_OBJECT (jar), "midori-settings");
         accept_cookies = katze_object_get_enum (settings, "accept-cookies");
         if (accept_cookies == 2 /* MIDORI_ACCEPT_COOKIES_NONE */)
@@ -263,14 +261,27 @@ cookie_jar_changed_cb (SoupCookieJar* jar,
         else if (new_cookie->expires)
         {
             gint age = katze_object_get_int (settings, "maximum-cookie-age");
-            soup_cookie_set_max_age (new_cookie,
-                age * SOUP_COOKIE_MAX_AGE_ONE_DAY);
-
-            if (!(out = fopen (filename, "a")))
-                return;
-            write_cookie (out, new_cookie);
-            if (fclose (out) != 0)
-                return;
+            if (age > 0)
+            {
+                FILE *out;
+                SoupDate* max_date = soup_date_new_from_now (
+                    age * SOUP_COOKIE_MAX_AGE_ONE_DAY);
+                if (soup_date_to_time_t (new_cookie->expires)
+                  > soup_date_to_time_t (max_date))
+                    soup_cookie_set_expires (new_cookie, max_date);
+
+                if (!(out = fopen (filename, "a")))
+                    return;
+                write_cookie (out, new_cookie);
+                if (fclose (out) != 0)
+                    return;
+            }
+            else
+            {
+                /* An age of 0 to SoupCookie means already-expired
+                   A user choosing 0 days probably expects 1 hour. */
+                soup_cookie_set_max_age (new_cookie, SOUP_COOKIE_MAX_AGE_ONE_HOUR);
+            }
         }
     }
 }



More information about the Xfce4-commits mailing list