GNU bug report logs -
#36350
[2.2.5] ‘read-headers’ blocks, thereby breaking web servers
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Mon, 24 Jun 2019 10:33:02 UTC
Severity: important
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
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’.
This bug report was last modified 5 years and 331 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.