+void
+request(SoupSession *s, SoupMessage *m, gpointer p) {
+ SoupCookieJar *cookies;
+ SoupMessageHeaders *h;
+ char *cookiestr;
+ soup_message_add_header_handler(m, "got-headers", "Set-Cookie",
+ G_CALLBACK(setcookie), NULL);
+
+ h = m->request_headers;
+ cookies = soup_cookie_jar_text_new(cookiefile, TRUE);
+ cookiestr = soup_cookie_jar_get_cookies(cookies, soup_message_get_uri(m), FALSE);
+ if(cookiestr)
+ soup_message_headers_append(h, "Cookie", cookiestr);
+ g_object_unref(cookies);
+}
+
+void
+setcookie(SoupMessage *m, gpointer p) {
+ SoupCookieJar *cookies;
+ SoupCookie *c;
+ SoupDate *e;
+ GSList *l;
+
+ cookies = soup_cookie_jar_text_new(cookiefile, FALSE);
+ for (l = soup_cookies_from_response(m); l; l = l->next){
+ c = (SoupCookie *)l->data;
+ if(c && c->expires == NULL) {
+ e = soup_date_new_from_time_t(time(NULL) + sessiontime);
+ c = soup_cookie_copy(c);
+ soup_cookie_set_expires(c, e);
+ }
+ soup_cookie_jar_add_cookie(cookies, c);
+ }
+ g_slist_free(l);
+ g_object_unref(cookies);
+}