souphttpsrc: Always use the content decoder but set `Accept-Encoding: identity` if...
authorSebastian Dröge <sebastian@centricular.com>
Sun, 15 Aug 2021 09:26:38 +0000 (12:26 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Sun, 15 Aug 2021 09:29:06 +0000 (12:29 +0300)
Some servers respond with gzip-encoded responses regardless of whether
the request allowed it to be used in the response. By always having the
content decoder enabled, these invalid responses can be decoded
correctly while for well-behaving servers the `compress` property
selects between allowing compressed responses or not.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/833

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/1053>

ext/soup/gstsouphttpsrc.c

index e1f2f6d..aba69be 100644 (file)
@@ -1512,8 +1512,10 @@ gst_soup_http_src_build_message (GstSoupHTTPSrc * src, const gchar * method)
     soup_message_disable_feature (src->msg, SOUP_TYPE_COOKIE_JAR);
   }
 
-  if (!src->compress)
-    soup_message_disable_feature (src->msg, SOUP_TYPE_CONTENT_DECODER);
+  if (!src->compress) {
+    soup_message_headers_append (src->msg->request_headers, "Accept-Encoding",
+        "identity");
+  }
 
   soup_message_set_flags (src->msg, SOUP_MESSAGE_OVERWRITE_CHUNKS |
       (src->automatic_redirect ? 0 : SOUP_MESSAGE_NO_REDIRECT));