souphttpsrc: Always use the content decoder but set Accept-Encoding: identity if no compression should be used

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>
This commit is contained in:
Sebastian Dröge 2021-08-15 12:26:38 +03:00
parent cfd4a9a6d9
commit 04963cac86

View 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));