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.
This commit is contained in:
Christian Dywan 2010-10-03 06:13:55 +02:00
parent 3c7d4800bc
commit 28eb039ec0

View file

@ -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 (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;
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);
}
}
}
}