From 5495e154c5ba05c7e254865e2ff6d1068f2dc6ca Mon Sep 17 00:00:00 2001
From: Philippe Normand <philn@igalia.com>
Date: Wed, 28 Oct 2015 12:00:09 +0100
Subject: [PATCH] souphttpsrc: cookie jar and context query support

Use a volatile Cookie jar to store cookies and handle the context
query so that session data can be shared with other elements (like
adaptivedemux).

https://bugzilla.gnome.org/show_bug.cgi?id=726314
---
 ext/soup/gstsouphttpsrc.c | 41 +++++++++++++++++++++++++++++++++++++++--
 ext/soup/gstsouphttpsrc.h |  1 +
 2 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c
index 52c1b8182..ac41692a5 100644
--- a/ext/soup/gstsouphttpsrc.c
+++ b/ext/soup/gstsouphttpsrc.c
@@ -481,6 +481,7 @@ gst_soup_http_src_init (GstSoupHTTPSrc * src)
   src->cookies = NULL;
   src->iradio_mode = DEFAULT_IRADIO_MODE;
   src->session = NULL;
+  src->cookie_jar = NULL;
   src->msg = NULL;
   src->timeout = DEFAULT_TIMEOUT;
   src->log_level = DEFAULT_SOUP_LOG_LEVEL;
@@ -942,6 +943,9 @@ gst_soup_http_src_session_open (GstSoupHTTPSrc * src)
     soup_session_remove_feature_by_type (src->session,
         SOUP_TYPE_CONTENT_DECODER);
 
+  src->cookie_jar = soup_cookie_jar_new ();
+  soup_session_add_feature (src->session,
+      SOUP_SESSION_FEATURE (src->cookie_jar));
   return TRUE;
 }
 
@@ -957,6 +961,11 @@ gst_soup_http_src_session_close (GstSoupHTTPSrc * src)
     src->msg = NULL;
   }
 
+  if (src->cookie_jar) {
+    g_object_unref (src->cookie_jar);
+    src->cookie_jar = NULL;
+  }
+
   if (src->session) {
     soup_session_abort (src->session);
     g_object_unref (src->session);
@@ -1372,11 +1381,12 @@ gst_soup_http_src_build_message (GstSoupHTTPSrc * src, const gchar * method)
   }
   if (src->cookies) {
     gchar **cookie;
+    SoupURI *uri = soup_uri_new (src->location);
 
     for (cookie = src->cookies; *cookie != NULL; cookie++) {
-      soup_message_headers_append (src->msg->request_headers, "Cookie",
-          *cookie);
+      soup_cookie_jar_set_cookie (src->cookie_jar, uri, *cookie);
     }
+    soup_uri_free (uri);
   }
 
   soup_message_set_flags (src->msg, SOUP_MESSAGE_OVERWRITE_CHUNKS |
@@ -1888,6 +1898,12 @@ gst_soup_http_src_query (GstBaseSrc * bsrc, GstQuery * query)
   gboolean ret;
   GstSchedulingFlags flags;
   gint minsize, maxsize, align;
+  GstContext *context;
+  GstStructure *context_structure;
+  char *cookie;
+  const gchar *cookies[2];
+  const gchar *context_type;
+  SoupURI *uri;
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_URI:
@@ -1899,6 +1915,27 @@ gst_soup_http_src_query (GstBaseSrc * bsrc, GstQuery * query)
       }
       ret = TRUE;
       break;
+    case GST_QUERY_CONTEXT:
+      if (gst_query_parse_context_type (query, &context_type)
+          && !g_strcmp0 (context_type, "http-headers")) {
+        uri = soup_uri_new (src->location);
+        cookie = soup_cookie_jar_get_cookies (src->cookie_jar, uri, TRUE);
+        context = gst_context_new ("http-headers", FALSE);
+        gst_context_make_writable (context);
+        context_structure = gst_context_writable_structure (context);
+        if (cookie != NULL) {
+          cookies[0] = cookie;
+          cookies[1] = NULL;
+          gst_structure_set (context_structure, "cookies", G_TYPE_STRV, cookies,
+              NULL);
+          g_free (cookie);
+        }
+        gst_query_set_context (query, context);
+        soup_uri_free (uri);
+        ret = TRUE;
+        break;
+      }
+
     default:
       ret = FALSE;
       break;
diff --git a/ext/soup/gstsouphttpsrc.h b/ext/soup/gstsouphttpsrc.h
index f140f80c5..52b32c768 100644
--- a/ext/soup/gstsouphttpsrc.h
+++ b/ext/soup/gstsouphttpsrc.h
@@ -60,6 +60,7 @@ struct _GstSoupHTTPSrc {
   gchar *proxy_pw;             /* Authentication user password for proxy URI. */
   gchar **cookies;             /* HTTP request cookies. */
   SoupSession *session;        /* Async context. */
+  SoupCookieJar *cookie_jar;   /* Volatile HTTP cookie storage */
   SoupMessage *msg;            /* Request message. */
   gint retry_count;            /* Number of retries since we received data */
   gint max_retries;            /* Maximum number of retries */
-- 
2.11.0

