<div>hi all.</div><div><br></div>I am reading  nginx&#39;s source(version is 0.7.66), but i don&#39;t understand this section:<div><br></div><div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">ngx_int_t</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">ngx_http_subrequest(ngx_http_request_t *r,</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    ngx_str_t *uri, ngx_str_t *args, ngx_http_request_t **psr,</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    ngx_http_post_subrequest_t *ps, ngx_uint_t flags)</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">{</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    ngx_connection_t              *c;</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    ngx_http_request_t            *sr;</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    ngx_http_core_srv_conf_t      *cscf;</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    ngx_http_postponed_request_t  *pr, *p;</font></font></div>

<div><font class="Apple-style-span" color="#FF0000" face="&#39;courier new&#39;, monospace"><br></font></div><div><font class="Apple-style-span" color="#FF0000" face="&#39;courier new&#39;, monospace">//i know subrequests&#39;s default is NGX_HTTP_MAX_SUBREQUESTS + 1 = 51;</font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    r-&gt;main-&gt;subrequests--;</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000"><br>

</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">//when subrequests </font></font><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; color: rgb(255, 0, 0); ">is </span><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; color: rgb(255, 0, 0); "> 0? </span></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    if (r-&gt;main-&gt;subrequests == 0) {</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">        ngx_log_error(NGX_LOG_ERR, r-&gt;connection-&gt;log, 0,</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">                      &quot;subrequests cycle while processing \&quot;%V\&quot;&quot;, uri);</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">        r-&gt;main-&gt;subrequests = 1;</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">        return NGX_ERROR;</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    }</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">....................................................................</font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000"><br></font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">//why subrequests need plus plus? </font></font></div>

<div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    r-&gt;main-&gt;subrequests++;</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000"><br>

</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    *psr = sr;</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000"><br>

</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">    return ngx_http_post_request(sr);</font></font></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace"><font class="Apple-style-span" color="#FF0000">}</font></font></div>

<div><br></div>the problem is after call <span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">ngx_http_subrequest and</span><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; color: rgb(255, 0, 0); "> </span> r-&gt;main-&gt;subrequests will not change(because subrequests-- and then ++), so <font class="Apple-style-span" face="&#39;courier new&#39;, monospace">when subrequests </font><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">is </span><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; "> 0?</span></div>

<div><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; "><br></span></div><div><font class="Apple-style-span" face="&#39;courier new&#39;, monospace">I think if </font> r-&gt;main-&gt;subrequests is the max subrequests number,  <span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">r-&gt;main-&gt;subrequests++ need to be  removed.</span></div>

<meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; "><br>

</span></div><div><span class="Apple-style-span" style="font-family: &#39;courier new&#39;, monospace; ">thanks.</span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><div>

-- <br>博观约取<br><br>douban :<a href="http://www.douban.com/people/mustang/">www.douban.com/people/mustang/</a><br><br>blog: <a href="http://simohayha.javaeye.com">simohayha.javaeye.com</a><br><br>twitter: <a href="http://www.twitter.com/minibobo">www.twitter.com/minibobo</a><br>


</div>