aboutsummaryrefslogtreecommitdiffhomepage
path: root/uzbl.c
diff options
context:
space:
mode:
authorGravatar Evgeny Grablyk <evgeny.grablyk@gmail.com>2009-05-05 23:16:43 +0300
committerGravatar Evgeny Grablyk <evgeny.grablyk@gmail.com>2009-05-05 23:16:43 +0300
commit12b0591ed2b5c65574eda699cbf5396bf89e8940 (patch)
treecb2efcbc55a0e5d14beac5ce79a3eeb5f3eb9e3e /uzbl.c
parentcc3a1419a12c01c2cabd87da99cc4464f715d196 (diff)
Implement saving cookies
Diffstat (limited to 'uzbl.c')
-rw-r--r--uzbl.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/uzbl.c b/uzbl.c
index 99098f2..161769b 100644
--- a/uzbl.c
+++ b/uzbl.c
@@ -862,7 +862,8 @@ settings_init () {
static void handle_cookies (SoupSession *session,
SoupMessage *msg,
gpointer user_data){
- soup_message_add_header_handler(msg, "got-headers", "Set-Cookie", G_CALLBACK(save_cookies));
+ soup_message_add_header_handler(msg, "got-headers", "Set-Cookie", G_CALLBACK(save_cookies), NULL);
+
/* ask handler for cookies, if there are any, use
soup_message_headers_replace (msg->request_headers,
"Cookie", cookies);
@@ -873,7 +874,17 @@ static void handle_cookies (SoupSession *session,
static void
save_cookies (SoupMessage *msg,
gpointer user_data){
- /* give them to handler */
+ GSList *ck;
+ char *req, *cookie;
+ for (ck = soup_cookies_from_response(msg); ck; ck = ck->next){
+ cookie = soup_cookie_to_set_cookie_header(ck->data);
+ req = malloc(strlen(cookie) + 10);
+ sprintf(req, "PUT \"%s\"", cookie);
+ run_command_async(cookie_handler, req);
+ free(req);
+ free(cookie);
+ }
+ g_slist_free(ck);
}
int