Hi,
I am developing my own nginx module, I am getting a post requests, parse the data and send 204.
I worked with nginx version release-1.9.15, and I am trying to upgrade to version release-1.15.5.
After the upgrade post requests with payload larger then 1M are getting blocked.
From the nginx log:
2018/11/21 20:03:10 [debug] 13470#0: *2 http reading blocked
I attached to the process and this is the request
Expect: 100-continue
Content-Type: multipart/form-data; boundary=", '-' <repeats 20 times>
=================
(gdb) p *c->buffer
$95 = {pos = 0xd00cf0 "PUT /1/file.txt HTTP/1.1\r\nHost: 127.0.0.1:8081\r\nUser-Agent: curl/7.47.0\r\nAccept: */*\r\nContent-Length: 4\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\ntxt1", last = 0xd00d90 "",
file_pos = 0, file_last = 0, start = 0xd00cf0 "PUT /1/file.txt HTTP/1.1\r\nHost: 127.0.0.1:8081\r\nUser-Agent: curl/7.47.0\r\nAccept: */*\r\nContent-Length: 4\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\ntxt1",
end = 0xd010f0 "\020\004", tag = 0x0, file = 0x0, shadow = 0x0, temporary = 1, memory = 0, mmap = 0, recycled = 0, in_file = 0, flush = 0, sync = 0, last_buf = 0, last_in_chain = 0, last_shadow = 0, temp_file = 0, num = 0}
=================
When the request get to ngx_http_read_client_request_body it send the ngx_http_test_expect
send HTTP/1.1 100 Continue response, but the request has no data on the buffer
on ngx_http_create_request
=================
(gdb) p *r->header_in
$58 = {
pos = 0xf3f1d0 "PUT /1/file_2G.txt HTTP/1.1\r\nHost: 127.0.0.1:8081\r\nUser-Agent: curl/7.47.0\r\nAccept: */*\r\nContent-Length: 1048804\r\nExpect: 100-continue\r\nContent-Type: multipart/form-data; boundary=", '-' <repeats 20 tim
es>..., last = 0xf3f2b0 "", file_pos = 0, file_last = 0,
start = 0xf3f1d0 "PUT /1/file_2G.txt HTTP/1.1\r\nHost: 127.0.0.1:8081\r\nUser-Agent: curl/7.47.0\r\nAccept: */*\r\nContent-Length: 1048804\r\nExpect: 100-continue\r\nContent-Type: multipart/form-data; boundary=", '-' <repeats 20 t
imes>..., end = 0xf3f5d0 "", tag = 0x0, file = 0x0, shadow = 0x0, temporary = 1, memory = 0, mmap = 0, recycled = 0, in_file = 0, flush = 0, sync = 0, last_buf = 0, last_in_chain = 0, last_shadow = 0, temp_file = 0, num = 0}
=================
on ngx_http_read_client_request_body:
=================
$59 = {pos = 0xf3f2b0 "", last = 0xf3f2b0 "", file_pos = 0, file_last = 0, start = 0xf3f1d0 "PUT /1", end = 0xf3f5d0 "", tag = 0x0, file = 0x0, shadow = 0x0, temporary = 1, memory = 0, mmap = 0, recycled = 0, in_file = 0,
flush = 0, sync = 0, last_buf = 0, last_in_chain = 0, last_shadow = 0, temp_file = 0, num = 0}
=================
The request are blocked without a response.
I did not changed nothing on my code, I tried to return to the old nginx version (1-9.15) and it worked, I an using a basic curl command.
I could not found any related information on the topic, is anyone familiar with this problem?
Nginx conf: