thank you!<br><br><div class="gmail_quote">On Mon, Nov 8, 2010 at 1:34 AM, Maxim Dounin <span dir="ltr">&lt;<a href="mailto:mdounin@mdounin.ru">mdounin@mdounin.ru</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Hello!<br>
<div class="im"><br>
On Mon, Nov 08, 2010 at 12:33:04AM +0800, BoBo wrote:<br>
<br>
</div><div class="im">&gt; this  patch suit for nginx-0.8.53, and i test in my arch linux. Thanks.<br>
&gt;<br>
&gt; diff -Naur nginx-0.8.53/auto/os/features<br>
&gt; nginx-0.8.53_accpet4/auto/os/features<br>
&gt; --- nginx-0.8.53/auto/os/features 2010-07-05 21:49:16.000000000 +0800<br>
&gt; +++ nginx-0.8.53_accpet4/auto/os/features 2010-11-08 00:20:28.126666705<br>
&gt; +0800<br>
&gt; @@ -352,3 +352,12 @@<br>
&gt;          fi<br>
&gt;      fi<br>
&gt;  fi<br>
&gt; +<br>
&gt; +ngx_feature=&quot;accept4()&quot;<br>
&gt; +ngx_feature_name=&quot;NGX_HAVE_ACCEPT4&quot;<br>
&gt; +ngx_feature_run=no<br>
&gt; +ngx_feature_incs=&quot;#include &lt;sys/socket.h&gt;&quot;<br>
&gt; +ngx_feature_path=<br>
&gt; +ngx_feature_libs=<br>
&gt; +ngx_feature_test=&quot;accept4(0, NULL, NULL, SOCK_NONBLOCK)&quot;<br>
&gt; +. auto/feature<br>
<br>
</div>What happens when host has new glibc but old kernel?  I assume<br>
this test would succeed, but accept4() call will fail with ENOSYS.<br>
<br>
Another question to consider is what to do with packages built on<br>
host with accept4() but used on hosts without.  Probably some<br>
runtime fallback to usual accept() is needed.<br></blockquote><div><br></div><div>thank you,I will test this situation. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


<div class="im"><br>
&gt; diff -Naur nginx-0.8.53/src/event/ngx_event_accept.c<br>
&gt; nginx-0.8.53_accpet4/src/event/ngx_event_accept.c<br>
&gt; --- nginx-0.8.53/src/event/ngx_event_accept.c 2009-11-02 03:29:49.000000000<br>
&gt; +0800<br>
&gt; +++ nginx-0.8.53_accpet4/src/event/ngx_event_accept.c 2010-11-08<br>
&gt; 00:27:21.630000043 +0800<br>
&gt; @@ -45,8 +45,12 @@<br>
&gt;<br>
&gt;      do {<br>
&gt;          socklen = NGX_SOCKADDRLEN;<br>
&gt; -<br>
&gt; +<br>
&gt; +#if (NGX_HAVE_ACCEPT4)<br>
&gt; +        s = accept4(lc-&gt;fd, (struct sockaddr *) sa, &amp;socklen,<br>
&gt; SOCK_NONBLOCK);<br>
&gt; +#else<br>
&gt;          s = accept(lc-&gt;fd, (struct sockaddr *) sa, &amp;socklen);<br>
&gt; +#endif<br>
&gt;<br>
&gt;          if (s == -1) {<br>
&gt;              err = ngx_socket_errno;<br>
&gt; @@ -115,9 +119,9 @@<br>
&gt;              ngx_close_accepted_connection(c);<br>
&gt;              return;<br>
&gt;          }<br>
&gt; -<br>
&gt; +<br>
<br>
</div>Stray -/+ probably indicate some unrelated whitespace changes<br>
(though patch seems to be corrupted by MUA anyway).<br></blockquote><div><br></div><div>this is my mistake. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


<div class="im"><br>
&gt; +#ifndef NGX_HAVE_ACCEPT4<br>
&gt;          /* set a blocking mode for aio and non-blocking mode for others */<br>
&gt; -<br>
&gt;          if (ngx_inherited_nonblocking) {<br>
&gt;              if (ngx_event_flags &amp; NGX_USE_AIO_EVENT) {<br>
&gt;                  if (ngx_blocking(s) == -1) {<br>
&gt; @@ -138,7 +142,8 @@<br>
&gt;                  }<br>
&gt;              }<br>
&gt;          }<br>
&gt; -<br>
&gt; +#endif<br>
<br>
</div>This part is wrong: with socket AIO sockets should be set to<br>
blocking mode.  The same code path as with<br>
ngx_inherited_nonblocking should be followed.<br>
<div><div></div><div class="h5"><br></div></div></blockquote><div> </div><div>in linux platform , NGX_HAVE_INHERITED_NONBLOCK is 0, and in ngx_os_init:</div><div><br></div><div><div>#if (NGX_HAVE_INHERITED_NONBLOCK)</div>

<div>    ngx_inherited_nonblocking = 1;</div><div>#else</div><div>    ngx_inherited_nonblocking = 0;</div><div>#endif</div></div><meta charset="utf-8"><div><br></div><div><br></div></div><br><br clear="all"><br>-- <br>博观约取<br>

<br>豆瓣:<a href="http://www.douban.com/people/mustang/" target="_blank">www.douban.com/people/mustang/</a><br><br>blog: <a href="http://www.pagefault.info" target="_blank">www.pagefault.info</a><br><br>twitter: <a href="http://www.twitter.com/minibobo" target="_blank">www.twitter.com/minibobo</a><br>