Hi,
I'm running the latest OpenBSD snapshot and the latest httpd version from
CVS and I'm facing the following problem.
# ./httpd -dvvv -f /root/httpd-test.conf
... default 10.0.2.2 - - [12/Mar/2018:19:15:56 +0100] "GET /test.html
HTTP/1.1" 200 32483 default 10.0.2.2 - - [12/Mar/2018:19:15:56 +0100] "GET
/image-1.png HTTP/1.1" 200 5314 default 10.0.2.2 - - [12/Mar/2018:19:15:56
+0100] "GET /image-2.png HTTP/1.1" 200 9602 default 10.0.2.2 - -
[12/Mar/2018:19:15:56 +0100] "GET /image-3.png HTTP/1.1" 200 6158 ...
test.html webpage and all images are loaded normally in the browser but
after 60 seconds (SERVER_REQUESTTIMEOUT) the following log messages appear:
... default 10.0.2.2 - - [12/Mar/2018:19:16:56 +0100] "<UNKNOWN> " 408 0
server default, client 1 (1 active), 10.0.2.2:56666 -> 10.0.2.15, timeout
(408 Request Timeout) default 10.0.2.2 - - [12/Mar/2018:19:16:56 +0100]
"<UNKNOWN> " 408 0 server default, client 1 (1 active), 10.0.2.2:56668 ->
10.0.2.15, timeout (408 Request Timeout) default 10.0.2.2 - -
[12/Mar/2018:19:16:56 +0100] "<UNKNOWN> " 408 0 server default, client 1 (1
active), 10.0.2.2:56670 -> 10.0.2.15, timeout (408 Request Timeout) ...
With the attached patch the log output is:
... default 10.0.2.2 - - [12/Mar/2018:19:28:58 +0100] "GET /test.html
HTTP/1.1" 200 32483 server default, client 1 (1 active), 10.0.2.2:56796 ->
10.0.2.15, done default 10.0.2.2 - - [12/Mar/2018:19:28:58 +0100] "GET
/image-1.png HTTP/1.1" 200 5314 server default, client 1 (1 active),
10.0.2.2:56798 -> 10.0.2.15, done default 10.0.2.2 - -
[12/Mar/2018:19:28:58 +0100] "GET /image-2.png HTTP/1.1" 200 6158 default
10.0.2.2 - - [12/Mar/2018:19:28:58 +0100] "GET /image-3.png HTTP/1.1" 200
9602 server default, client 2 (1 active), 10.0.2.2:56800 -> 10.0.2.15, done
server default, client 1 (1 active), 10.0.2.2:56802 -> 10.0.2.15, done ...
Let me know if you need additional information.
Regards,
Nikola
--
Nikola Kolev
[email protected]
https://github.com/koue/
Index: server_file.c
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/server_file.c,v
retrieving revision 1.65
diff -u -p -r1.65 server_file.c
--- server_file.c 2 Feb 2017 22:19:59 -0000 1.65
+++ server_file.c 12 Mar 2018 17:32:51 -0000
@@ -611,7 +611,7 @@ server_file_error(struct bufferevent *be
src = EVBUFFER_INPUT(clt->clt_bev);
/* Close the connection if a previous pipeline is empty */
- if (clt->clt_pipelining && EVBUFFER_LENGTH(src) == 0)
+ if (clt->clt_pipelining == 0 && EVBUFFER_LENGTH(src) == 0)
clt->clt_persist = 0;
if (clt->clt_persist) {