From: Derek Upham <derek_upham@mailfence.com>
To: guile-devel@gnu.org
Subject: Re: [Patch] Support HTTP/2 in HTTP client
Date: Tue, 7 Apr 2020 16:39:38 +0200 (CEST) [thread overview]
Message-ID: <877dyrqs0q.fsf@priss.frightenedpiglet.com> (raw)
In-Reply-To: <87sghongp7.fsf@priss.frightenedpiglet.com>
Okay, I figured it out. In that particular chunk of code I was
calling out to Curl to do the heavy lifting: “(run/port (curl
--silent --head ,source-url))”. Curl negotiates HTTP/2 and dumps
the header information:
HTTP/2 200
date: Tue, 07 Apr 2020 14:22:37 GMT
content-type: audio/mpeg
content-length: 31411830
The code then passed the response port to the existing
“read-response” function in the web/response module, to turn this
text into data objects.
That means this isn’t a “support HTTP/2 connections” change, it’s
just a “support parsing HTTP/2 responses” change.
However, sometime during all of this I figured out how to get the
system-installed extensions working with my personal build of
Guile, so the TLS extension now works and I can cut Curl out of
this code and just use “http-head”. We can drop this patch.
Thanks,
Derek
Derek Upham <derek_upham@mailfence.com> writes:
> I made this particular tweak because Guile 2.2’s HTTP/1.1 client
> requests were getting back an HTTP/2 response from a podcast
> server, and choking. (The use of Google’s URL was just an
> example to show the format of the HTTP response header.) Let’s
> drop the
> patch for now. I’ll try disabling it locally and see whether I
> can still reproduce it. Given the amount of redirects that
> media
> website backends do, it’s possible that I’ll never come across
> the problem again.
>
> Derek
>
> Tristan Colgate <tcolgate@gmail.com> writes:
>
>> http/2 is a substantially different protocol, it will take
>> considerable effort to support it, guile's client should only
>> be
>> offering http/1.1 to the server.
>>
>> On Tue, 31 Mar 2020 at 15:49, Derek Upham
>> <derek_upham@mailfence.com> wrote:
>>>
>>> Companies like Google now respond to HTTP requests with HTTP
>>> 2.
>>> For example:
>>>
>>> curl --silent --head https://www.google.com
>>>
>>> returns the first line
>>>
>>> HTTP/2 200
>>>
>>> The Guile HTTP client code expects a “HTTP/x.y” structure, and
>>> treats this as an error. This patch recognizes and handles
>>> “HTTP/2” on input and output. HTTP version numbers don’t
>>> proliferate quickly, so the code uses a brute force approach
>>> for
>>> now.
>>>
>>>
>>> Derek
>>>
>>> --
>>> Derek Upham
>>> derek_upham@mailfence.com
--
Derek Upham
derek_upham@mailfence.com
prev parent reply other threads:[~2020-04-07 14:39 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-31 14:42 [Patch] Support HTTP/2 in HTTP client Derek Upham
2020-03-31 15:00 ` Tristan Colgate
2020-04-01 1:21 ` Derek Upham
2020-04-01 7:24 ` Tristan Colgate
2020-04-07 14:39 ` Derek Upham [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877dyrqs0q.fsf@priss.frightenedpiglet.com \
--to=derek_upham@mailfence.com \
--cc=guile-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).