On Tue, Nov 26, 2013 at 4:49 PM, olli hauer <oha...@gmx.de> wrote:

> On 2013-11-26 22:01, Rainer Jung wrote:
> > On 26.11.2013 15:58, olli hauer wrote:
> >> On 2013-11-25 23:25, Jeff Trawick wrote:
> >
> >>> See if this brings any happiness:
> >>>
> >>> Index: network_io/unix/sockets.c
> >>> ===================================================================
> >>> --- network_io/unix/sockets.c (revision 1545394)
> >>> +++ network_io/unix/sockets.c (working copy)
> >>> @@ -273,7 +273,7 @@
> >>>  #endif /* TCP_NODELAY_INHERITED */
> >>>  #if APR_O_NONBLOCK_INHERITED
> >>>      if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) {
> >>> -        apr_set_option(*new, APR_SO_NONBLOCK, 1);
> >>> +        /* apr_set_option(*new, APR_SO_NONBLOCK, 1); */
> >>>      }
> >>>  #endif /* APR_O_NONBLOCK_INHERITED */
> >>
> >>
> >> I can confirm after removing the line in apr-1.5.0 apache24 no longer
> hangs.
> >> (tested with apache-2.4.6 / 2.4.7)
> >>
> >> I seen now why this is triggered by comparing apr.h after `./configure',
> >>
> >>> grep APR_O_NONBLOCK_INHERITED work/apr-1.4.8/include/apr.h
> >> ./work/apr-1.4.8/include/apr.h:#define APR_O_NONBLOCK_INHERITED 0
> >>
> >>> grep APR_O_NONBLOCK_INHERITED work/apr-1.5.0/include/apr.h
> >> work/apr-1.5.0/include/apr.h:#define APR_O_NONBLOCK_INHERITED 1
> >>
> >>
> >>> There are some APR 1.5 autoconf changes to consider at
> >>>
> http://svn.apache.org/viewvc/apr/apr/branches/1.5.x/build/apr_network.m4?view=log
> >>
> >> OK, backing out the changes from r1502805 seems to do the trick on 10b3
> >> http://svn.apache.org/viewvc?view=revision&revision=1502805
> >>
> >>> grep APR_O_NONBLOCK_INHERITED work/apr-1.5.0/include/apr.h
> >> work/apr-1.5.0/include/apr.h:#define APR_O_NONBLOCK_INHERITED 0
> >
> > But acking out that change simply breaks the configure test on any
> > platform, because the resulting detection program no longer compiles.
> >
> > So the real culprit, is that the detection isn't doing the right thing.
> >
> > The test was changed before the compilation fix in the following
> revision:
> >
> >
> http://svn.apache.org/viewvc/apr/apr/branches/1.5.x/build/apr_network.m4?r1=887002&r2=1449569&pathrev=1502805&diff_format=h
> >
> > That was due to the fact that I saw the test providing unreliable
> > results on a busy machine.
> >
> > So the question to me is: is the O_NONBLOCK setting inherited from a
> > listening socket on FreeBSD 10 - that's what the test tries to detect -
> > and how can we fix this feature test?
> >
> > Or: is the test correct, but it previously failed for systems, where the
> > Apache or APR code does not do the right thing if the test would have
> > succeeded.
> >
>
> Good questions ...
>
> Apache is running fine even with "APR_O_NONBLOCK_INHERITED 1" in apr.h,
> except
> - V4 mapping is enabled and in httpd.conf a Listen directive without IP
>   address e.g. "Listen 80" is given and then only if requested from a
> remote host.
>   ( a simple echo "GET /" | nc $lo0-address 80 is working )
>

Here's what I saw yesterday:

* This simple echo | nc request does not trigger the hang, which occurs
when httpd tries a non-blocking read (which really blocks) on a connection
with keep-alive enabled.
* The hang occurs over loopback or LAN, with IPv4 or IPv6 addresses.




>
>
> --
> Regards,
> olli
>



-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Reply via email to