I do not know if it is a bug or design intention: if request body client sent is larger than the amount Content-Length specified . The addition data is also received and dealt in an incorrect way.<br><br>If content-length is smaller :<br>
1) sending a PUT request to webdav module, addition data is written also in to file.<br><br>2) proxy module behave wrongly, it closes client connection.<br><br>To avoid such problems:<br><br>@@ -1,4 +1,3 @@<br>-<br>&nbsp;/*<br>
&nbsp; * Copyright (C) Igor Sysoev<br>&nbsp; */<br>@@ -133,9 +132,12 @@ ngx_http_read_client_request_body(ngx_ht<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rb-&gt;buf = b;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((off_t) preread &gt;= r-&gt;headers_in.content_length_n) {<br>-<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* the whole request body was pre-read */<br>
&nbsp;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b-&gt;last = b-&gt;pos + r-&gt;headers_in.content_length_n;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; preread = r-&gt;headers_in.content_length_n;<br>+<br>+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r-&gt;header_in-&gt;pos += (size_t) r-&gt;headers_in.content_length_n;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r-&gt;request_length += r-&gt;headers_in.content_length_n;<br>&nbsp;<br>@@ -267,8 +269,17 @@ ngx_http_do_read_client_request_body(ngx<br>&nbsp;&nbsp;&nbsp;&nbsp; ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c-&gt;log, 0,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;http read client request body&quot;);<br>
&nbsp;<br>+<br>&nbsp;&nbsp;&nbsp;&nbsp; for ( ;; ) {<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( ;; ) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rb-&gt;rest == 0) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* dicard */<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char buf[1024];<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = 1;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (n &gt; 0)<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n = c-&gt;recv(c, buf, 1024);<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return NGX_OK;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( ;rb-&gt;rest != 0; ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (rb-&gt;buf-&gt;last == rb-&gt;buf-&gt;end) {<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (ngx_http_write_request_body(r, rb-&gt;to_write) != NGX_OK) {<br>
<br><br><br clear="all"><br>-- <br>要了几天饱饭就不记得西北风啥味了<br>