<listitem><para>Path to file containing trusted anchors instead of the system CA database.</para></listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>http2</varname></term>
+ <listitem><para>A boolean value, defaults to true. By
+ default, libostree will use HTTP2; setting this to <literal>false</literal>
+ will disable it. May be useful to work around broken servers.
+ </para></listitem>
+ </varlistentry>
+
<varlistentry>
<term><varname>unconfigured-state</varname></term>
<listitem><para>If set, pulls from this remote will fail with the configured text. This is intended for OS vendors which have a subscription process to access content.</para></listitem>
* there are numerous HTTP/2 fixes since the original version in
* libcurl 7.43.0.
*/
+ if (!(self->config_flags & OSTREE_FETCHER_FLAGS_DISABLE_HTTP2))
+ {
#if CURL_AT_LEAST_VERSION(7, 51, 0)
- curl_easy_setopt (req->easy, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
+ curl_easy_setopt (req->easy, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
#endif
- /* https://github.com/curl/curl/blob/curl-7_53_0/docs/examples/http2-download.c */
+ /* https://github.com/curl/curl/blob/curl-7_53_0/docs/examples/http2-download.c */
#if (CURLPIPE_MULTIPLEX > 0)
- /* wait for pipe connection to confirm */
- curl_easy_setopt (req->easy, CURLOPT_PIPEWAIT, 1L);
+ /* wait for pipe connection to confirm */
+ curl_easy_setopt (req->easy, CURLOPT_PIPEWAIT, 1L);
#endif
+ }
curl_easy_setopt (req->easy, CURLOPT_WRITEFUNCTION, write_cb);
if (g_getenv ("OSTREE_DEBUG_HTTP"))
curl_easy_setopt (req->easy, CURLOPT_VERBOSE, 1L);
typedef enum {
OSTREE_FETCHER_FLAGS_NONE = 0,
OSTREE_FETCHER_FLAGS_TLS_PERMISSIVE = (1 << 0),
- OSTREE_FETCHER_FLAGS_TRANSFER_GZIP = (1 << 1)
+ OSTREE_FETCHER_FLAGS_TRANSFER_GZIP = (1 << 1),
+ OSTREE_FETCHER_FLAGS_DISABLE_HTTP2 = (1 << 2),
} OstreeFetcherConfigFlags;
typedef enum {
if (gzip)
fetcher_flags |= OSTREE_FETCHER_FLAGS_TRANSFER_GZIP;
+ { gboolean http2 = TRUE;
+ if (!ostree_repo_get_remote_boolean_option (self, remote_name,
+ "http2", TRUE,
+ &http2, error))
+ goto out;
+ if (!http2)
+ fetcher_flags |= OSTREE_FETCHER_FLAGS_DISABLE_HTTP2;
+ }
+
fetcher = _ostree_fetcher_new (self->tmp_dir_fd, remote_name, fetcher_flags);
{