﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	uname	nginx_version
1439	auto_index module should discard request body explicitly	Alex Zhang		"Hi all!

I found that auto_index module doesn't call the `ngx_http_discard_request_body` to discard the request body, and when a GET request carries some data, the request body will be treated as a pipeline request, most of time it will emit another `400 BAD REQUEST` response.

You can reproduce this problem with the following configuration:

{{{
server {
     listen 8082;
     server_name _;

     location / {
         autoindex on;
         root /tmp;
     }
 }
}}}

And send a request using `curl`.

{{{
curl -v http://127.0.0.1:8082 -XGET -d ""a""
}}}

We can see the error.log:

{{{2017/11/30 17:04:06 [info] 19098#0: *2 client sent invalid method while reading client pipelined request line, client: 127.0.0.1, server: _, request: ""a""}}}

Or we can capture the `400 BAD REQUEST` response with tcpdump.

After trying this patch, this problem is fixed.

{{{

diff --git a/src/http/modules/ngx_http_autoindex_module.c b/src/http/modules/ngx_http_autoindex_module.c
index b3bf6528..ebb3cc41 100644
--- a/src/http/modules/ngx_http_autoindex_module.c
+++ b/src/http/modules/ngx_http_autoindex_module.c
@@ -276,6 +276,11 @@ ngx_http_autoindex_handler(ngx_http_request_t *r)
     r->headers_out.content_type_len = r->headers_out.content_type.len;
     r->headers_out.content_type_lowcase = NULL;

+    rc = ngx_http_discard_request_body(r);
+    if (rc != NGX_OK) {
+        return rc;
+    }
+
     rc = ngx_http_send_header(r);

     if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {

}}}"	defect	closed	minor		nginx-module	1.13.x	fixed	autoindex		Linux Fedora26-64 4.13.15-200.fc26.x86_64 #1 SMP Tue Nov 21 21:10:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux	"nginx version: nginx/1.13.8
built by gcc 7.2.1 20170915 (Red Hat 7.2.1-2) (GCC)
configure arguments: --prefix=/home/alex/bin_install/nginx"
