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: https://daniel.haxx.se/blog/2018/09/05/curl-7-61-1-comes-with-only-bug-fixes/ ) 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 support. 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: https://twitter.com/TvdW/status/1156126392918126592 I'm very interested to learn how other developers that use libcurl in production systems manage these sort of problems. ------------------------------------------------------------------- Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.html
