How to manage buggy http/2 in MacOS and Linux
Date: Mon, 18 Nov 2019 14:42:58 +0100
Hi! Bit of a discussion topic here.
I maintain the libcurl R bindings which are used by 1M+ users to build
clients for countless web services. On MacOS and Linux, the bindings
link to the system version of libcurl. As of MacOS Catalina (released
last month) this is now libcurl 7.64.1 which is the first time that
http/2 is enabled by default. This is where the problems begin.
Users that have upgraded to Catalina are reporting applications that
were stable before are now randomly giving "Error in the HTTP2 framing
layer" errors. Similar sounds from Linux users. As we know, HTTP/2
support in libcurl was quite buggy until very recently (eg:
) and maybe still today not as reliable as HTTP/1.
As maintainer of the bindings, I'm not sure how to handle this. One
solution would to be override the default CURLOPT_HTTP_VERSION in the
bindings to CURL_HTTP_VERSION_1_1 for certain versions of libcurl, but
it's hard to judge which versions of libcurl have robust http/2
Obviously the transition to http/2 is very complex and problems may
only affect particular combinations of libcurl / nghttp2 / libssl /
nginx / etc. Perhaps it would be useful to collect some experiences
about the state of http/2 in libcurl from people who have done
large-scale testing with http/2 in real life (i.e. a multi-handle with
many different requests to different servers)? Or a special page with
http/2 problems that we have encountered or fixed in given versions of
libcurl? For example Tom van der Woert has posted some insightful bug
reports and tweets:
I'm very interested to learn how other developers that use libcurl in
production systems manage these sort of problems.
Received on 2019-11-18