skeeto / elfeed

An Emacs web feeds client
The Unlicense
1.49k stars 116 forks source link

Curl 92 error for Wordpress sites - problem with http version 2 #467

Open brittAnderson opened 2 years ago

brittAnderson commented 2 years ago

I noticed that three sites I follow, all Wordpress, were returning curl error 92: a failure to properly close stream. Some searching suggested that that might be a problem with my version of http that my curl was using. When setting

(setq elfeed-curl-extra-arguments '("--http1.1"))

Things seem to work well. Just posting this in case anyone runs into something similar. Don't know if there is a way to automate this or not since it seems preferable to use the default protocols when possible.

skeeto commented 2 years ago

Could you share your "curl --version"? I can't reproduce with Curl 7.74.0. I suspect it's your local Curl, GnuTLS, or if on a work network, meddling middleware (often broken).

When HTTP/2 was first introduced I turned it off (cb62168) since these errors were common. Implementations matured after a couple of years, so I turned it back on (448ad64) and I haven't seen the error since.

brittAnderson commented 2 years ago

The output of curl --version is: curl 7.85.0 (x86_64-pc-linux-gnu) libcurl/7.85.0 OpenSSL/1.1.1q zlib/1.2.12 brotli/1.0.9 zstd/1.5.2 libidn2/2.3.3 libpsl/0.21.1 (+libidn2/2.3.0) libssh2/1.10.0 nghttp2/1.49.0 Release-Date: 2022-08-31 Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd

I was under the impression that it might be the libcurl library that updated the default from http1.1 to http2, but I may be mistaken there.

brittAnderson commented 2 years ago

Here is the result from using curl from the command line with and without the http1.1 argument:

[britt@joy ~]$ curl --http1.1 https://julesh.com/rss/feed
[britt@joy ~]$ curl  https://julesh.com/rss/feed
curl: (92) HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)