souphttpsrc: Remove cookie_jar patch
authorGilbok Lee <gilbok.lee@samsung.com>
Tue, 14 Jul 2020 02:04:32 +0000 (11:04 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Tue, 14 Jul 2020 05:05:45 +0000 (14:05 +0900)
- Cookie jar patch is no longer necessary due to the patch below.
  souphttpsrc: Implement soup session sharing
  souphttpsrc: Use a in-memory cookie jar by default in sessions we created

Change-Id: I47d9adea66f994e235f80938985ce43f281bb487

ext/soup/gstsouphttpsrc.c
ext/soup/gstsouphttpsrc.h
packaging/gst-plugins-good.spec

index 26daa83..09d3828 100644 (file)
@@ -534,9 +534,7 @@ gst_soup_http_src_init (GstSoupHTTPSrc * src)
         "The proxy in the http_proxy env var (\"%s\") cannot be parsed.",
         proxy);
   }
-#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-  src->cookie_jar  = NULL;
-#endif
+
   gst_base_src_set_automatic_eos (GST_BASE_SRC (src), FALSE);
 
   gst_soup_http_src_reset (src);
@@ -643,32 +641,8 @@ gst_soup_http_src_set_property (GObject * object, guint prop_id,
       break;
     }
     case PROP_COOKIES:
-#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-    {
-      char **array;
-      SoupURI *base_uri;
-      SoupCookie *cookie_parsed = NULL;
-
-      g_strfreev (src->cookies);
-      src->cookies = g_strdupv (g_value_get_boxed (value));
-
-      if (src->cookie_jar && ((array = src->cookies) != NULL)) {
-        base_uri = soup_uri_new (src->location);
-        GST_INFO_OBJECT (src, "request to set cookies...");
-        while (*array != NULL) {
-          cookie_parsed = soup_cookie_parse (*array++, base_uri);
-          if (cookie_parsed && cookie_parsed->domain)
-            soup_cookie_jar_add_cookie (src->cookie_jar, cookie_parsed);
-        }
-        soup_uri_free (base_uri);
-      } else {
-        GST_INFO_OBJECT (src, "set cookies after session creation");
-      }
-    }
-#else
       g_strfreev (src->cookies);
       src->cookies = g_strdupv (g_value_get_boxed (value));
-#endif
       break;
     case PROP_IS_LIVE:
       gst_base_src_set_live (GST_BASE_SRC (src), g_value_get_boolean (value));
@@ -764,32 +738,12 @@ gst_soup_http_src_get_property (GObject * object, guint prop_id,
         g_value_set_static_string (value, "");
       else {
         char *proxy = soup_uri_to_string (src->proxy, FALSE);
-
         g_value_set_string (value, proxy);
         g_free (proxy);
       }
       break;
     case PROP_COOKIES:
-#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-    {
-        GSList *cookie_list, *c;
-        gchar **cookies, **array;
-
-        cookies = NULL;
-        if ((src->cookie_jar) &&
-            ((cookie_list = soup_cookie_jar_all_cookies (src->cookie_jar)) != NULL)) {
-          cookies = g_new0 (gchar *, g_slist_length(cookie_list) + 1);
-          array = cookies;
-          for (c = cookie_list; c; c = c->next) {
-            *array++ = soup_cookie_to_set_cookie_header ((SoupCookie *)(c->data));
-          }
-          soup_cookies_free (cookie_list);
-        }
-        g_value_set_boxed (value, cookies);
-    }
-#else
-        g_value_set_boxed (value, g_strdupv (src->cookies));
-#endif
+      g_value_set_boxed (value, g_strdupv (src->cookies));
       break;
     case PROP_IS_LIVE:
       g_value_set_boolean (value, gst_base_src_is_live (GST_BASE_SRC (src)));
@@ -931,35 +885,6 @@ _append_extra_header (GQuark field_id, const GValue * value, gpointer user_data)
   soup_message_headers_append (src->msg->request_headers, field_name,
       field_content);
 
-#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-  if (!g_ascii_strcasecmp(field_name, "Cookie")) {
-    SoupURI *uri = NULL;
-    SoupCookie *cookie_parsed = NULL;
-    gchar *saveptr = NULL;
-
-    if (strlen(field_content) > 0) {
-      gchar *tmp_field = NULL;
-
-      uri = soup_uri_new (src->location);
-
-      tmp_field = strtok_r (field_content, ";", &saveptr);
-
-      while (tmp_field != NULL) {
-        GST_DEBUG_OBJECT (src, "field_content = %s", tmp_field);
-
-        cookie_parsed = soup_cookie_parse(tmp_field, uri);
-        GST_DEBUG_OBJECT (src, "cookie parsed = %p", cookie_parsed);
-
-        if (src->cookie_jar && cookie_parsed && cookie_parsed->domain)
-          soup_cookie_jar_add_cookie (src->cookie_jar, cookie_parsed);
-
-        tmp_field = strtok_r (NULL, ";", &saveptr);
-      }
-      soup_uri_free (uri);
-    }
-  }
-#endif
-
   g_free (field_content);
 
   return TRUE;
@@ -1117,28 +1042,6 @@ gst_soup_http_src_session_open (GstSoupHTTPSrc * src)
       return FALSE;
     }
 
-#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-    {
-      char **array = NULL;
-      SoupURI *base_uri;
-      SoupCookie *soup_cookie = NULL;
-
-      soup_session_add_feature_by_type (src->session, SOUP_TYPE_COOKIE_JAR);
-      src->cookie_jar = SOUP_COOKIE_JAR (soup_session_get_feature (src->session, SOUP_TYPE_COOKIE_JAR));
-      if ((array = src->cookies) != NULL) {
-        base_uri = soup_uri_new (src->location);
-        while (*array != NULL) {
-          soup_cookie = soup_cookie_parse (*array++, base_uri);
-          if (soup_cookie && soup_cookie->domain) {
-            GST_INFO_OBJECT (src, "adding cookies..");
-            soup_cookie_jar_add_cookie (src->cookie_jar, soup_cookie);
-          }
-        }
-        soup_uri_free (base_uri);
-      }
-    }
-#endif
-
     g_signal_connect (src->session, "authenticate",
         G_CALLBACK (gst_soup_http_src_authenticate_cb), src);
 
@@ -1173,19 +1076,7 @@ gst_soup_http_src_session_close (GstSoupHTTPSrc * src)
 
   if (src->session) {
     if (!src->session_is_shared)
-#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-/* When Playback is ongoing and Browser is moved to background ( Pressing Menu or Home Key ), The Session gets destroyed.
-   But the cookie_jar property remains unfreed. This results in garbage pointer and causes crash.
-   Removing the cookie_jar feature during close session of browser to handle the issue. */
-    {
-      GST_DEBUG_OBJECT (src, "Removing Cookie Jar instance");
-      soup_session_remove_feature_by_type(src->session, SOUP_TYPE_COOKIE_JAR);
-      src->cookie_jar = NULL;
-         soup_session_abort (src->session);
-    }
-#else
       soup_session_abort (src->session);
-#endif
     g_signal_handlers_disconnect_by_func (src->session,
         G_CALLBACK (gst_soup_http_src_authenticate_cb), src);
     g_object_unref (src->session);
@@ -1259,26 +1150,7 @@ gst_soup_http_src_headers_foreach (const gchar * name, const gchar * val,
 {
   GST_INFO_OBJECT (src, " %s: %s", name, val);
 
-  if (g_ascii_strcasecmp (name, "Set-Cookie") == 0) {
-    if (val) {
-      gboolean bret = FALSE;
-      GstStructure *s = NULL;
-      GstSoupHTTPSrc * tmp = src;
-      SoupURI *uri;
-
-      uri =  soup_uri_new (tmp->location);
-
-      /* post current bandwith & uri to application */
-      s = gst_structure_new ("cookies",
-            "updated-cookie", G_TYPE_STRING, val,
-            "updated-url", G_TYPE_STRING, tmp->location, NULL);
-      bret = gst_element_post_message (GST_ELEMENT_CAST (src), gst_message_new_element (GST_OBJECT_CAST (src), s));
-      soup_cookie_jar_set_cookie (tmp->cookie_jar,  uri, val);
-      soup_uri_free (uri);
-
-      GST_INFO_OBJECT (src, "request url [%s], posted cookies [%s] msg and returned = %d", tmp->location, val, bret);
-    }
-  } else if (g_ascii_strcasecmp (name, "Dash-Oldest-Segment") == 0) {
+  if (g_ascii_strcasecmp (name, "Dash-Oldest-Segment") == 0) {
     if (val) {
       GstSoupHTTPSrc * tmp = src;
       tmp->dash_oldest_segment = g_strdup (val);
@@ -1765,33 +1637,12 @@ gst_soup_http_src_build_message (GstSoupHTTPSrc * src, const gchar * method)
   }
 
 #ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-/* This changes are needed to enable Seekable Contents from server.
+  /* This changes are needed to enable Seekable Contents from server.
    We have observed that , for few specific networks ( VODAFONE ) , without theabove headers ,
    Youtube is sending non-seekable contents to the Client. */
   soup_message_headers_append (src->msg->request_headers, "Accept-Ranges","bytes");
+#endif
 
-  if (src->cookie_jar) {
-    GSList *cookie_list, *c;
-    gchar *header;
-
-    SoupURI *uri = NULL;
-    SoupCookie *cookie;
-    uri = soup_uri_new (src->location);
-
-    if ((cookie_list = soup_cookie_jar_all_cookies (src->cookie_jar)) != NULL) {
-      for (c = cookie_list; c; c = c->next) {
-        cookie = (SoupCookie *)c->data;
-        if (soup_cookie_applies_to_uri(cookie, uri)) {
-          header = soup_cookie_to_cookie_header (cookie);
-          soup_message_headers_append (src->msg->request_headers, "Cookie", header);
-          g_free (header);
-        }
-      }
-    }
-    soup_cookies_free (cookie_list);
-    soup_uri_free (uri);
-  }
-#else
   if (src->cookies) {
     gchar **cookie;
 
@@ -1800,7 +1651,6 @@ gst_soup_http_src_build_message (GstSoupHTTPSrc * src, const gchar * method)
           *cookie);
     }
   }
-#endif
 
   if (!src->compress)
     soup_message_disable_feature (src->msg, SOUP_TYPE_CONTENT_DECODER);
index 458fa2a..74a34bb 100644 (file)
@@ -104,9 +104,7 @@ struct _GstSoupHTTPSrc {
   gchar *iradio_url;
 
   GstStructure *extra_headers;
-#ifdef TIZEN_FEATURE_SOUP_MODIFICATION
-  SoupCookieJar *cookie_jar;
-#endif
+
   SoupLoggerLogLevel log_level;/* Soup HTTP session logger level */
 
   gboolean compress;
@@ -125,7 +123,7 @@ struct _GstSoupHTTPSrc {
   gchar *dash_newest_segment;
   guint64 received_total;    /* temp: for debugging */
   guint dlna_opt;            /* DLNA server option */
-#endif  
+#endif
 };
 
 struct _GstSoupHTTPSrcClass {
index 01c1622..f2a7cf0 100644 (file)
@@ -3,7 +3,7 @@
 
 Name:           gst-plugins-good
 Version:        1.16.2
-Release:        5
+Release:        6
 License:        LGPL-2.1+
 Summary:        GStreamer Streaming-Media Framework Plug-Ins
 Url:            http://gstreamer.freedesktop.org/