Ken Simpson wrote:
Hmm, may be it reports blocking when it's not. What if you replace the whole blocking testing/setting conditional block, with just unconditional:

$socket->opt_set(APR::SO_NONBLOCK => 0);


I have tried this and it makes no difference -- it looks like non
blocking mode is simply not being set.

And this verification code doesn't fail?

        # test that we really *are* in the blocking mode
        !$socket->opt_get(APR::SO_NONBLOCK)
            or die "failed to set blocking mode";


I'm going to examine the diffs
between Apache 2.0.49 and .50; this code worked properly on .49. I
have a suspicion that something they did broke the OpenBSD build.

I think it's this change that introduced this "feature":

  *) SECURITY: CAN-2004-0493 (cve.mitre.org)
     Close a denial of service vulnerability identified by Georgi
     Guninski which could lead to memory exhaustion with certain
     input data.  [Jeff Trawick]

So you don't need to check all the differences. I think apr was affected as well.

In fact APR is broken as it ignores the APR::BLOCK_READ flag in filters. But nobody at httpd-dev/apr-dev seems to even care :( So filter writers need to manually set the socket to the blocking mode, which sucks :(


-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com

--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html



Reply via email to