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) {

Reply via email to