aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--src/cache.c22
2 files changed, 21 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 917df499..3a6cd517 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,7 +6,8 @@ dillo-3.0.1 [not released yet]
+- Add preference for UI theme.
- Allow key bindings for paging left/right.
- - Privacy -- never send cookies when making third-party requests.
+ - Privacy -- never send cookies when making third-party requests, and
+ never accept cookies in the responses to these requests.
Patches: corvid
-----------------------------------------------------------------------------
diff --git a/src/cache.c b/src/cache.c
index 3804ac7e..b6ff9450 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -742,13 +742,29 @@ static void Cache_parse_header(CacheEntry_t *entry)
#ifndef DISABLE_COOKIES
if ((Cookies = Cache_parse_multiple_fields(header, "Set-Cookie"))) {
- char *server_date = Cache_parse_field(header, "Date");
+ CacheClient_t *client;
+
+ for (i = 0; (client = dList_nth_data(ClientQueue, i)); ++i) {
+ if (client->Url == entry->Url) {
+ DilloWeb *web = client->Web;
+
+ if (!web->requester ||
+ a_Url_same_public_suffix(entry->Url, web->requester)) {
+ char *server_date = Cache_parse_field(header, "Date");
+
+ a_Cookies_set(Cookies, entry->Url, server_date);
+ dFree(server_date);
+ break;
+ }
+ }
+ }
+ if (i >= dList_length(ClientQueue)) {
+ MSG("Cache: cookies not accepted from '%s'\n", URL_STR(entry->Url));
+ }
- a_Cookies_set(Cookies, entry->Url, server_date);
for (i = 0; (data = dList_nth_data(Cookies, i)); ++i)
dFree(data);
dList_free(Cookies);
- dFree(server_date);
}
#endif /* !DISABLE_COOKIES */