Helloo,do anyone has this situation?

cruze guo gyb997 at gmail.com
Thu Apr 16 10:02:16 UTC 2015


I compile the nginx with this configure.
--prefix=/home/svn/nginx --user=svn
--add-module=../ngx_devel_kit-master
--add-module=../srcache-nginx-module-master
--add-module=../redis2-nginx-module-master
--add-module=../set-misc-nginx-module-master
--add-module=../echo-nginx-module-master
--add-module=../ngx_http_redis-0.3.7
--add-module=../lua-nginx-module-0.9.13 --with-debug

I want to use nginx +redis for caching the svn webdav method.
I also patch some code for support the webdav http method,propfind
,but in this situation,it's not import.

The svn client use chunked encode for http client request .When I use
the TortoiseSVN 1.8.11 to test my cache system.
I get this

read: 21, 00007FFFF1964830, 2048, 131072
2015/04/08 13:08:58 [debug] 16486#0: *1 read: 21, 00007FFFF1964830, 2048, 133120
2015/04/08 13:08:58 [debug] 16486#0: *1 read: 21, 00007FFFF1964830, 2048, 135168
2015/04/08 13:08:58 [debug] 16486#0: *1 read: 21, 00007FFFF1964830, 2048, 137216
2015/04/08 13:08:58 [debug] 16486#0: *1 read: 21, 00007FFFF1964830, 2048, 139264
2015/04/08 13:08:58 [debug] 16486#0: *1 read: 21, 00007FFFF1964830, 2048, 141312
2015/04/08 13:08:58 [debug] 16486#0: *1 read: 21, 00007FFFF1964830, 2048, 143360
2015/04/08 13:08:58 [debug] 16486#0: *1 access phase: 8
2015/04/08 13:08:58 [debug] 16486#0: *1 lua access handler,
uri:"/ps/se/branches" c:1
2015/04/08 13:08:58 [debug] 16486#0: *1 http client request body preread 120
2015/04/08 13:08:58 [debug] 16486#0: *1 http request body chunked filter
2015/04/08 13:08:58 [debug] 16486#0: *1 http body chunked buf t:1 f:0
0000000000746440, pos 0000000000746609, size: 120 file: 0, size: 0 <==
120 IS NOT ENOUGH  FOR REQUEST !!!!!
2015/04/08 13:08:58 [debug] 16486#0: *1 http chunked byte: 31 s:0
2015/04/08 13:08:58 [debug] 16486#0: *1 http chunked byte: 32 s:1
2015/04/08 13:08:58 [debug] 16486#0: *1 http chunked byte: 63 s:1
2015/04/08 13:08:58 [debug] 16486#0: *1 http chunked byte: 0D s:1
2015/04/08 13:08:58 [debug] 16486#0: *1 http chunked byte: 0A s:3
2015/04/08 13:08:58 [debug] 16486#0: *1 http chunked byte: 3C s:4
2015/04/08 13:08:58 [debug] 16486#0: *1 http body chunked buf t:1 f:0
0000000000746440, pos 0000000000746681, size: 0 file: 0, size: 0
2015/04/08 13:08:58 [debug] 16486#0: *1 http body new buf t:1 f:0
000000000074660E, pos 000000000074660E, size: 115 file: 0, size: 0
2015/04/08 13:08:58 [debug] 16486#0: *1 malloc:
00007FD8C33DC010:1048576  <===  SO MALLOC NEW BUF

but ,the (struct ngx_http_request_s) 's  write_event_handler will be
set to ngx_http_request_empty_handler.

in ngx_http_request_body.c
function ngx_http_read_client_request_body
r->write_event_handler = ngx_http_request_empty_handler;

It mean  nothing will handle the next step,when you read all client
request body!!
I want to know how to take the request body buffer bigger ?
or,can I use this ugly patch to solve this problem?

for struct ngx_http_request_s {
   .........
    ngx_http_event_handler_pt         read_event_handler;
    ngx_http_event_handler_pt         write_event_handler;
    ngx_http_event_handler_pt         write_event_handler_back;  <=== ADD this
........
}

it's ugly but it's useful.



More information about the nginx mailing list