--- Begin Message ---
Subject: |
[2.2.5] ‘read-headers’ blocks, thereby breaking web servers |
Date: |
Mon, 24 Jun 2019 12:32:18 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) |
Hello,
In Guile 2.2.5, if you run:
./meta/guile examples/web/hello.scm &
wget -O - http://localhost:8080
You’ll notice that ‘wget’ hangs (never receives a response) because the
server is actually stuck in a read(2) call that will never complete, in
‘read-headers’.
Reverting 73cde5ed7218a090ecee888870908af5445796f0 solves the problem.
AIUI, before that commit, ‘read-header-line’ would read exactly one
line. After this change, it calls ‘lookahead-char’, which can block,
and that’s exactly what’s happening here.
I don’t know how HTTP continuation lines work, so I’m not sure what a
correct fix would look like. Mark, WDYT?
I also noticed that there are no unit tests for (web server), which we
should probably address while we’re at it. :-)
Thanks,
Ludo’.
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#36350: [2.2.5] ‘read-headers’ blocks, thereby breaking web servers |
Date: |
Sun, 30 Jun 2019 21:50:17 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) |
Hi,
Mark H Weaver <address@hidden> skribis:
> Ludovic Courtès <address@hidden> writes:
>> Perhaps we should consider releasing 2.0.6 soon and use that in Guix
>> on ‘core-updates’.
>
> Sure, sounds like a good idea.
Done in a152a67d3865cc6e7f9d7abd8f17a6e905b8e841. The test is simple
but would catch regressions like this one.
Ludo’.
--- End Message ---