[STATUS] (flood) Wed Aug 14 23:46:10 EDT 2002

2002-08-15 Thread Rodent of Unusual Size
flood STATUS:   -*-text-*-
Last modified at [$Date: 2002/08/01 22:28:51 $]

Release:

1.0:   Released July 23, 2002
milestone-03:  Tagged January 16, 2002
ASF-transfer:  Released July 17, 2001
milestone-02:  Tagged August 13, 2001
milestone-01:  Tagged July 11, 2001 (tag lost during transfer)

RELEASE SHOWSTOPPERS:

* Everything needs to work perfectly

Other bugs that need fixing:

* I get a SIGBUS on Darwin with our examples/round-robin-ssl.xml
  config, on the second URL. I'm using OpenSSL 0.9.6c 21 dec 2001.
  
* DNS lookup failures in any urllist cause segfault.
   Justin says: Wow.  Why?
   Aaron says: Is this still happening? It's been awhile.

* iPlanet sends Content-length - there is a hack in there now
  to recognize it.  However, all HTTP headers need to be normalized
  before checking their values.  This isn't easy to do.  Grr.

* OpenSSL 0.9.6
  Segfaults under high load.  Upgrade to OpenSSL 0.9.6b.
   Aaron says: I just found a big bug that might have been causing
   this all along (we weren't closing ssl sockets).
   How can I reproduce the problem you were seeing
   to verify if this was the fix?

* SEGVs when /tmp/.rnd doesn't exist are bad. Make it configurable
  and at least bomb with a good error message. (See Doug's patch.)
   Status: This is fixed, no?

* If APR has disabled threads, flood should as well. We might want
  to have an enable/disable parameter that does this also, providing
  an error if threads are desired but not available.

* flood needs to clear pools more often. With a long running test
  it can chew up memory very quickly. We should just bite the bullet
  and create/destroy/clear pools for each level of our model:
  farm, farmer, profile, url/request-cycle, etc.

* APR needs to have a unified interface for ephemeral port
  exhaustion, but aparently Solaris and Linux return different
  errors at the moment. Fix this in APR then take advantage of
  it in flood.

* The examples/analyze-relative scripts fail when there are less
  than 5 unique URLs.

Other features that need writing:

* It would be nice if a url in a urllist could handle basic
  authentication.

* More analysis and graphing scripts are needed

* Write robust tool (using tethereal perhaps) to take network dumps 
  and convert them to flood's XML format.
Status: Justin volunteers.  Aaron had a script somewhere that is
a start.

* Get chunked encoding support working.
Status: Justin volunteers.  He got sidetracked by the httpd
implementation of input filtering and never finished 
this.  This is a stopgap until apr-serf is completed.

* Maybe we should make randfile and capath runtime directives that
  come out of the XML, instead of autoconf parameters.

* We are using apr_os_thread_current() and getpid() in some places
  when what we really want is a GUID. The GUID will be used to
  correlate raw output data with each farmer. We may wish to print
  a unique ID for each of farm, farmer, profile, and url to help in
  postprocessing.

* We are using strtol() in some places and strtoll() in others.
  Pick one (Aaron says strtol(), but he's not sure).

* Validation of responses (known C-L, specific strings in response)
   Status: Justin volunteers

* HTTP error codes (ie. teach it about 302s)
   Justin says: Yeah, this won't be with round_robin as implemented.  
Need a linked list-based profile where we can insert 
new URLs into the sequence.

* Farmer (Single-thread, multiple profiles)
   Status: Aaron says: If you have threads, then any Farmer can be
   run as part of any Farm. If you don't have threads, you can
   currently only run one Farmer named Joe right now (this will
   be changed so that if you don't have threads, flood will attempt
   to run all Farmers in serial under one process).

* Collective (Single-host, multiple farms)
  This is a number of Farms that have been fork()ed into child processes.

* Megaconglomerate (Multiple hosts each running a collective)
  This is a number of Collectives running on a number of hosts, invoked
  via RSH/SSH or maybe even some proprietary mechanism.

* Other types of urllists
a) Random / Random-weighted
b) Sequenced (useful with cookie propogation)
c) Round-robin
d) Chaining of the above strategies
  Status: Round-robin is complete.

* Other types of reports
  Status: Aaron says: simple reports are functional. Justin added
  a new type that simply prints the approx. timestamp when
  the test was run, and the result as OK/FAIL; it is 

Current CVS on Win32

2002-08-15 Thread Sebastian Bergmann

cache_cache.c
C:\home\httpd-2.0\modules\experimental\cache_cache.c(58) : warning C4047:
'funct
ion' : Anzahl der Dereferenzierungen bei 'long (__cdecl *)(void *)' und
'long (_
_cdecl ** )(void *)' unterschiedlich
C:\home\httpd-2.0\modules\experimental\cache_cache.c(58) : warning C4024:
'cache
_pq_init' : Unterschiedliche Typen fuer formalen und uebergebenen
Parameter 2
C:\home\httpd-2.0\modules\experimental\cache_cache.c(87) : error C2064:
Ausdruck
 ergibt keine Funktion
C:\home\httpd-2.0\modules\experimental\cache_cache.c(89) : error C2064:
Ausdruck
 ergibt keine Funktion
C:\home\httpd-2.0\modules\experimental\cache_cache.c(98) : error C2064:
Ausdruck
 ergibt keine Funktion
C:\home\httpd-2.0\modules\experimental\cache_cache.c(104) : error C2064:
Ausdruc
k ergibt keine Funktion

-- 
  Sebastian Bergmann
  http://sebastian-bergmann.de/ http://phpOpenTracker.de/

  Did I help you? Consider a gift: http://wishlist.sebastian-bergmann.de/



Re[2]: perchild on FreeBSD 5?

2002-08-15 Thread Gabriel Ambuehl

Hi Ben Laurie,
you wrote.

BL Gabriel Ambuehl wrote:
 Am I correct assuming that when they are mutex'ed that there will be
 one instance of XX_lib PER perchild process, right? So eventually,
 each domain will be able to serve one request at a time?
BL Surely not. It just means only one thread will be in the library at a time.

I'm not really that experienced with regards to threading on Unix
(once got burnt quite badly and burnt kids fear fire...) but if there
is only one thread at a time allowed to be in the library there can
only be one PHP request served (I might should have noted that I
was referring to PHP requests) at a time by that process, no?



Regards,
Gabriel




Re[2]: perchild on FreeBSD 5?

2002-08-15 Thread Gabriel Ambuehl

Hi Rasmus Lerdorf,
you wrote.

 time spent in mutex-protected code is 99% of the total request processing
 time, then the server will scale poorly.  The key success factor is to not
 use libraries that require locking for lengthy operations.
RL If, for example, we have to mutex an entire database library and every

So it is expected to break up, for example, PHP in libraries that do
support threading explicitely and such that don't or aren't known to
do it instead of having a mutex around all of PHP?

I'm aware of the fact that request for static content will still
get served and that's very nice since many sites consist of few dynamic
pages and loads of images ;-) so in the end, the scalability might not
suffer too much in our case as we only host low traffic sites on
shared servers anyway and on the dedicated ones, prefork has proven to
offer quite acceptable performance.

In view of this It's impossible to tell which libs are thread safe
wouldn't it perhaps make sense to have a perchild version that uses
processed instead of threads? I sure know that this would result in a
insane amount of sleeping processes in a massive Virtualhosting setup
but in my tests a very low end 500Mhz FreeBSD 4.6 box with 256MB RAM had
no problem whatsoever with 2000 sleeping Apache processes belonging to 250
DISTINCT instances of 1.3.26, all based upon different config files
and running on different ports . Swap wasn't used and in idle state,
the 2000 processes consumed less than 1.5% CPU...









Regards,
Gabriel




Re: Current CVS on Win32

2002-08-15 Thread Cliff Woolley

On Thu, 15 Aug 2002, Sebastian Bergmann wrote:

 cache_cache.c
 C:\home\httpd-2.0\modules\experimental\cache_cache.c(58) : warning C4047:
 'funct
 ion' : Anzahl der Dereferenzierungen bei 'long (__cdecl *)(void *)' und
 'long (_
 _cdecl ** )(void *)' unterschiedlich

Oh bother.  :-/  I'll fix that up ASAP.

--Cliff




Re: Re[2]: perchild on FreeBSD 5?

2002-08-15 Thread Ryan Bloom


 In view of this It's impossible to tell which libs are thread safe
 wouldn't it perhaps make sense to have a perchild version that uses
 processed instead of threads? I sure know that this would result in a
 insane amount of sleeping processes in a massive Virtualhosting setup
 but in my tests a very low end 500Mhz FreeBSD 4.6 box with 256MB RAM had
 no problem whatsoever with 2000 sleeping Apache processes belonging to 250
 DISTINCT instances of 1.3.26, all based upon different config files
 and running on different ports . Swap wasn't used and in idle state,
 the 2000 processes consumed less than 1.5% CPU...

While it is technicalloy possible to create a preforking server that
operates like perchild, it isn't a simple thing to do.  I would even go so
far as to say that it isn't something you really want.  If you want that
behavior, the best solution is to just run multiple Apache servers.  I
looked at every MPM before creating perchild, and the only one that made a
lot of sense for perchild was a static number of processes with a dynamic
number of threads per process.  If you have a dynamic number of processes,
then the parent process must always determine how many child processes
with each uid/gid exist currently.  If you are going to do that, you are
better off to just run two or three instances of prefork with an IP alias.


Ryan

___
Ryan Bloom  [EMAIL PROTECTED]
550 Jean St
Oakland CA 94610
---




Re: perchild on FreeBSD 5?

2002-08-15 Thread Brian Pane

Gabriel Ambuehl wrote:

Hi Rasmus Lerdorf,
you wrote.

  

time spent in mutex-protected code is 99% of the total request processing
time, then the server will scale poorly.  The key success factor is to not
use libraries that require locking for lengthy operations.
  

RL If, for example, we have to mutex an entire database library and every

So it is expected to break up, for example, PHP in libraries that do
support threading explicitely and such that don't or aren't known to
do it instead of having a mutex around all of PHP?


No, not at all.  The library partitioning is irrelevant:
it's functions, not libraries, that have to be wrapped in
mutexes if they're not thread-safe.

Brian





Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Justin Erenkrantz

[ Moving to dev@httpd where this belongs ]

On Thu, Aug 15, 2002 at 07:10:02AM -0700, Rasmus Lerdorf wrote:
 Correct.  From the feedback I am getting, users do not adequately
 understand the implications of choosing a threaded MPM.  We need to do a
 better job educating them to the fact that we simple cannot guarantee
 which libraries are threadsafe and which are not.

Precisely which libraries are the core of httpd-2.0 using in a
thread-unsafe manner?  At least in the core distribution, we
should have knowledge of which libraries are thread-unsafe and
prevent this.  To my knowledge, I haven't seen a single problem
related to this.  If you have actual cases where httpd-2.0 is
doing something unsafe, please let us know!

I think perhaps your concern is simply to PHP which may bring
in thread-unsafe libraries not httpd-2.0.  -- justin



Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Rasmus Lerdorf

On Thu, 15 Aug 2002, Justin Erenkrantz wrote:

 [ Moving to dev@httpd where this belongs ]

 On Thu, Aug 15, 2002 at 07:10:02AM -0700, Rasmus Lerdorf wrote:
  Correct.  From the feedback I am getting, users do not adequately
  understand the implications of choosing a threaded MPM.  We need to do a
  better job educating them to the fact that we simple cannot guarantee
  which libraries are threadsafe and which are not.

 Precisely which libraries are the core of httpd-2.0 using in a
 thread-unsafe manner?  At least in the core distribution, we
 should have knowledge of which libraries are thread-unsafe and
 prevent this.  To my knowledge, I haven't seen a single problem
 related to this.  If you have actual cases where httpd-2.0 is
 doing something unsafe, please let us know!

 I think perhaps your concern is simply to PHP which may bring
 in thread-unsafe libraries not httpd-2.0.  -- justin

As I have stated a dozen times now.  Yes, I am talking about PHP and any
other add-on module people may use.  I think the attitude of most people
here sucks.  Apache doesn't have a problem, why should we do anything?

The reality is that a big chunk of our Apache community uses Apache to
serve up complex dynamic content using PHP, mod_perl, other 3rd-party
modules and homegrown modules as well. PHP and mod_perl alone are on well
over 50% of all Apache servers. People don't look to Apache for simply
serving up static content. A lot of sites replaced Apache long ago with
thttpd/Zeus/boa/Tux/khttpd for that.  All I am after is a simple very
visible addition to the Apache 2 distribution which explains that the
threaded mpms may not be suitable for serving up dynamic content due to
the unknown thread safety of the libraries these dynamic solutions rely
on.

-Rasmus




Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Justin Erenkrantz

On Thu, Aug 15, 2002 at 09:40:06AM -0700, Rasmus Lerdorf wrote:
 thttpd/Zeus/boa/Tux/khttpd for that.  All I am after is a simple very
 visible addition to the Apache 2 distribution which explains that the
 threaded mpms may not be suitable for serving up dynamic content due to
 the unknown thread safety of the libraries these dynamic solutions rely
 on.

And, my point back to you is that should be part of the documentation
of the module NOT of httpd-2.0.  Making broad statements that will
confuse our users like threaded MPMs may not be suitable for serving
up dynamic content is a ridiculously overbroad and inaccurate
statement.

A better statement may be: Some PHP or Perl modules may not
interact well with a threaded MPM in httpd-2.0.  Caution is urged
when using a threaded MPM.  To me, that totally belongs in the
PHP or Perl documentation.  That is a limitation of PHP and mod_perl
not of httpd-2.0.

That statement doesn't hold for a mod_jk2 (or whatever the latest
httpd-2.0 Tomcat module is).  It totally depends on how the 3rd
party module is architected not on the architecture of the web
server itself.  -- justin



Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Greg Stein

EXACTLY.

Thanks, Justin.

We are not trying to shirk our responsibilities or be lazy about this. But
you can't say my module is so popular that you must account for problems
that I introduce into your environment.

I'm fine with adding something to our document that says something along the
lines of, if you choose a threaded MPM such as FOO, BAR, or BAZ, then you
need to ensure that the third-party modules you choose to use with the web
server are thread-safe. Please contact your third-party modules' vendors for
more information on their thread-safety.

-g

On Thu, Aug 15, 2002 at 10:09:27AM -0700, Justin Erenkrantz wrote:
 On Thu, Aug 15, 2002 at 09:40:06AM -0700, Rasmus Lerdorf wrote:
  thttpd/Zeus/boa/Tux/khttpd for that.  All I am after is a simple very
  visible addition to the Apache 2 distribution which explains that the
  threaded mpms may not be suitable for serving up dynamic content due to
  the unknown thread safety of the libraries these dynamic solutions rely
  on.
 
 And, my point back to you is that should be part of the documentation
 of the module NOT of httpd-2.0.  Making broad statements that will
 confuse our users like threaded MPMs may not be suitable for serving
 up dynamic content is a ridiculously overbroad and inaccurate
 statement.
 
 A better statement may be: Some PHP or Perl modules may not
 interact well with a threaded MPM in httpd-2.0.  Caution is urged
 when using a threaded MPM.  To me, that totally belongs in the
 PHP or Perl documentation.  That is a limitation of PHP and mod_perl
 not of httpd-2.0.
 
 That statement doesn't hold for a mod_jk2 (or whatever the latest
 httpd-2.0 Tomcat module is).  It totally depends on how the 3rd
 party module is architected not on the architecture of the web
 server itself.  -- justin

-- 
Greg Stein, http://www.lyra.org/



Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Rasmus Lerdorf

That's just crap.  I can say the same thing.  PHP is threadsafe, it's not
my responsibility that libxyz is not.  Any Apache 2.0 module running under
a threaded mpm linked against libxyz that contains non-threadsafe code is
going to have exactly the same problem unless the module sticks in
mutexes.

Right now in the PHP world we simply tell people that they should not
upgrade to Apache 2.0.  If everyone ends up doing that, then I am sorry to
say, but Apache 2.0 is dead and the current Netcraft statement is going to
be a recurring thing.

As a platform there are some cool possibilities with Apache 2.0 and I'd
like to see it do well, but as a module author, being told to piss off and
deal with the problem myself is not any way to encourage 3rd-party module
support for Apache 2.0.  In the end the users out there don't really give
a crap about which web server they use.  They just want something that
works.  Apache was always the web server that just worked.  I strongly
feel it is our job to help make sure that Apache remain the web server
that just works.  Like it or not, but the web server is the foundation for
all the projects under the ASF umbrella and if we fuck up Apache, every
sub-project will be hurt in the process.

-Rasmus


On Thu, 15 Aug 2002, Greg Stein wrote:

 EXACTLY.

 Thanks, Justin.

 We are not trying to shirk our responsibilities or be lazy about this. But
 you can't say my module is so popular that you must account for problems
 that I introduce into your environment.

 I'm fine with adding something to our document that says something along the
 lines of, if you choose a threaded MPM such as FOO, BAR, or BAZ, then you
 need to ensure that the third-party modules you choose to use with the web
 server are thread-safe. Please contact your third-party modules' vendors for
 more information on their thread-safety.

 -g

 On Thu, Aug 15, 2002 at 10:09:27AM -0700, Justin Erenkrantz wrote:
  On Thu, Aug 15, 2002 at 09:40:06AM -0700, Rasmus Lerdorf wrote:
   thttpd/Zeus/boa/Tux/khttpd for that.  All I am after is a simple very
   visible addition to the Apache 2 distribution which explains that the
   threaded mpms may not be suitable for serving up dynamic content due to
   the unknown thread safety of the libraries these dynamic solutions rely
   on.
 
  And, my point back to you is that should be part of the documentation
  of the module NOT of httpd-2.0.  Making broad statements that will
  confuse our users like threaded MPMs may not be suitable for serving
  up dynamic content is a ridiculously overbroad and inaccurate
  statement.
 
  A better statement may be: Some PHP or Perl modules may not
  interact well with a threaded MPM in httpd-2.0.  Caution is urged
  when using a threaded MPM.  To me, that totally belongs in the
  PHP or Perl documentation.  That is a limitation of PHP and mod_perl
  not of httpd-2.0.
 
  That statement doesn't hold for a mod_jk2 (or whatever the latest
  httpd-2.0 Tomcat module is).  It totally depends on how the 3rd
  party module is architected not on the architecture of the web
  server itself.  -- justin

 --
 Greg Stein, http://www.lyra.org/





Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Ian Holsman

Rasmus Lerdorf wrote:
 That's just crap.  I can say the same thing.  PHP is threadsafe, it's not
 my responsibility that libxyz is not.  Any Apache 2.0 module running under
 a threaded mpm linked against libxyz that contains non-threadsafe code is
 going to have exactly the same problem unless the module sticks in
 mutexes.

how are we .. the apache group know what libraries you link to ?

the only thing I can suggest technically is that we add a field
in the module definition which says if the module is thread_safe.
it would be up to the module developer to determine this, either based
on the libraries he has linked in, or what color the trees are.
if the module developer isn't certain about the thread safety of linked 
libraries he should set it to off.

php could be really smart about this, and do this for it's own 
extensions.. and use the result of querying it's own extension for their 
thread safety.
as the php extension developers certify their extensions php will be 
either thread safe or not.

we as the apache group could then query the module when we load it (like 
we do to the magic number) and refuse to load a non-thread safe module
into a threaded mpm.

does this sound ok to you?
 
snip





Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Wilfredo Sanchez

   That's not a bad idea, methinks.  It would at least give us a 
reliable way to print an error message letting the user know why module 
foo can't be loaded: please try prefork if you need to use this module. 
  Better than weird errors later in runtime.  But does PHP ask HTTPD to 
load PHP modules?  If not, PHP would need to do the same.

-wsv


On Thursday, August 15, 2002, at 01:43  PM, Ian Holsman wrote:

 the only thing I can suggest technically is that we add a field
 in the module definition which says if the module is thread_safe.




Re: [PATCH] Added IfModule wrappers to httpd-std.conf.in (fwd)

2002-08-15 Thread Wilfredo Sanchez

   OK, so do people really hate the IfModule wrappers?  Because I 
wanna commit it.  Votes?

   We have +1 from Fred, Ian and a 0 of some flavor from Joshua.

-wsv




Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread johannes m. richter


But does PHP ask HTTPD to load PHP modules?  If not, PHP would need to do 
the same.

This is how I understood Ian's suggestion. That PHP asks its extensions 
whether they're thread-safe or not. And PHP itself tells Apache whether it 
- as a whole, i.e. including its extensions - is thread safe.

j.

-- 
A conference is a gathering of important people who singly can
do nothing, but together can decide that nothing can be done.
   -- Fred Allen
- http://jgcl.at/ko/ - new photos from summer camp 2002 in Moosen/Tirol




Re: [PATCH] Added IfModule wrappers to httpd-std.conf.in (fwd)

2002-08-15 Thread Cliff Woolley

On Thu, 15 Aug 2002, Wilfredo Sanchez wrote:

We have +1 from Fred, Ian and a 0 of some flavor from Joshua.

-0  Hesitant but I won't stand in the way.




Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Ian Holsman

Wilfredo Sanchez wrote:
   That's not a bad idea, methinks.  It would at least give us a reliable 
 way to print an error message letting the user know why module foo can't 
 be loaded: please try prefork if you need to use this module.  Better 
 than weird errors later in runtime.  But does PHP ask HTTPD to load PHP 
 modules?  If not, PHP would need to do the same.

exactly.
php would ask it's extensions that are loaded/built in if they are 
threadsafe, and if any weren't then it would respond no
until php has this functionality it could just return a blanket no
this would work as long as php doesn't dynamically load extensions
at request time. if it does then it could refuse to load a non-threaded
dynamic extension into a already running threaded php.
 
 -wsv
 
 
 On Thursday, August 15, 2002, at 01:43  PM, Ian Holsman wrote:
 
 the only thing I can suggest technically is that we add a field
 in the module definition which says if the module is thread_safe.
 
 





Re: [PATCH] Added IfModule wrappers to httpd-std.conf.in (fwd)

2002-08-15 Thread Aaron Bannert

On Thu, Aug 15, 2002 at 01:53:58PM -0400, Cliff Woolley wrote:
 On Thu, 15 Aug 2002, Wilfredo Sanchez wrote:
 
 We have +1 from Fred, Ian and a 0 of some flavor from Joshua.
 
 -0  Hesitant but I won't stand in the way.

Same here, -0.

-aaron



Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Justin Erenkrantz

On Thu, Aug 15, 2002 at 07:57:02PM +0200, johannes m. richter wrote:
 
 But does PHP ask HTTPD to load PHP modules?  If not, PHP would need to do 
 the same.
 
 This is how I understood Ian's suggestion. That PHP asks its extensions 
 whether they're thread-safe or not. And PHP itself tells Apache whether it 
 - as a whole, i.e. including its extensions - is thread safe.

FWIW, this infrastructure is already present within httpd-2.0.

ap_mpm_query(AP_MPMQ_IS_THREADED, *foo);

if (foo != AP_MPMQ_NOT_SUPPORTED) {
  ...we have threads...
}

HTH.  -- justin



Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Ian Holsman

Justin Erenkrantz wrote:
 On Thu, Aug 15, 2002 at 07:57:02PM +0200, johannes m. richter wrote:
 
But does PHP ask HTTPD to load PHP modules?  If not, PHP would need to do 
the same.

This is how I understood Ian's suggestion. That PHP asks its extensions 
whether they're thread-safe or not. And PHP itself tells Apache whether it 
- as a whole, i.e. including its extensions - is thread safe.
 
 
 FWIW, this infrastructure is already present within httpd-2.0.
 
 ap_mpm_query(AP_MPMQ_IS_THREADED, *foo);
 
 if (foo != AP_MPMQ_NOT_SUPPORTED) {
   ...we have threads...
 }

it's not as obvious, the proposal above forces the developer to say
i verify my module will work with threaded
 
 HTH.  -- justin
 





proxy cgi no longer streamed, C-L filter buffers

2002-08-15 Thread Blaise Tarr

With 2.0.40 content coming from mod_proxy and mod_cgi is no longer
streamed to the client but sent in one big chunk.  It appears that the
C-L filter now buffers the data in every case.  For certain
applications this is a very undesirable feature, and it would be very
helpful if the C-L filter could be bypassed (and simply not send back
a C-L header).  In 2.0.32 streaming behaved beautifully.  Then in
2.0.36 and 2.0.39 the C-L filter started buffering large chunks.  Now
in 2.0.40 everything is buffered and a C-L header is always inserted.
Could the 2.0.32 streaming/C-L behavior be brought back, perhaps
enabled by a config option?

Blaise



Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Rasmus Lerdorf

 FWIW, I'm +1 on what Rasmus says - at least for widely used libraries.
 Obviously anything internal to PHP is PHP's problem. But anything
 everyone uses is our problem.

 However, I would advocate fixing the libraries rather than wrapping them
 where possible.

Yup, definitely.  They aren't always open source or sometimes they are
just architecturally not fixabled.  Step 1 is to gather information.  I
have committed an initial short list to

httpd-2.0/docs/manual/developer/thread_safety.html

where I plan on keeping track of stuff as the PHP bug reports flow in or I
dive into each library to check out the code.

-Rasmus




Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread Justin Erenkrantz

On Thu, Aug 15, 2002 at 11:51:52AM -0700, Ian Holsman wrote:
 it's not as obvious, the proposal above forces the developer to say
 i verify my module will work with threaded

No, I'd much prefer that modules code their own checks for it.  A
simple check in the pre_config hook phase should be sufficient. 

The PHP case would have to be done dynamically - it can't be
done at compile-time, so a flag in the module structure at
compile-time would not work.  It would almost have to do
something like I outlined before with a revamp of its extensions
framework to indicate if a PHP extension is known-to-be
thread-safe.  -- justin



[Patch] Move configure argument parsing into apr

2002-08-15 Thread Thom May

This is the twin of the commit I just did on APR, just to minimise
duplication.
Cheers,
-Thom 
-- 
Thom May - [EMAIL PROTECTED]

Knghtbrd- for the record:
Knghtbrd- AGH!
* Knghtbrd- gets back to abusing gdm


Index: acinclude.m4
===
RCS file: /home/cvspublic/httpd-2.0/acinclude.m4,v
retrieving revision 1.126
diff -u -r1.126 acinclude.m4
--- acinclude.m416 Jul 2002 18:33:05 -  1.126
+++ acinclude.m415 Aug 2002 17:32:53 -
@@ -501,127 +501,6 @@
 fi
 ])
 
-dnl
-dnl APACHE_PARSE_ARGUMENTS
-dnl a reimplementation of autoconf's argument parser,
-dnl used here to allow us to co-exist layouts and argument based
-dnl set ups.
-AC_DEFUN(APACHE_PARSE_ARGUMENTS,[
-ac_prev=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n $ac_prev; then
-eval $ac_prev=\$ac_option
-ac_prev=
-continue
-  fi
-
-  ac_optarg=`expr x$ac_option : 'x[[^=]]*=\(.*\)'`
-
-  case $ac_option in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-bindir=$ac_optarg ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-datadir=$ac_optarg ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-exec_prefix=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-libexecdir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-mandir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-prefix=$ac_optarg ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-sharedstatedir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-sysconfdir=$ac_optarg ;;
-
-  esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-[[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;;
-*)  AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);;
-  esac
-done
-
-])dnl
 
 dnl
 dnl APACHE_EXPORT_ARGUMENTS
Index: configure.in
===

resolving SSL with mod_ssl.so

2002-08-15 Thread David Hill

Hi,
Building 2.0.40 on Tru64 I am seeing issues with building a resolved
mod_ssl.so.

I am using OpenSSL with the SSL libs built static. I get messages about
unresolved symbols when loading mod_ssl. I chased it down but need some
advice on a real resolution.

As you all know, mod_ssl needs to resolve against -lss -lcrypto. What I am
seeing is that:

Configure:
*  correctly detects that SSL is desired,
* finds the libs in the right place (I specify the location),
* knows that additional libraries, -lssl and -lcrypto are needed.
* adds -lssl and -lcrypto to EXTRA_LIBS

We are golden so far ... if we are building a static httpd, but I want to
build apache DSO.

When linking http, I do see the EXTRA_LIBS on the link line...

But... I am building mod_ssl.so, so there are no SSL calls in httpd to
resolve against, so in effect, the EXTRA_LIBS are ignored when linking
httpd. If my SSL libraries were built shared, then the linker would put a
runtime requirement into the httpd image that would load the SSL libs, but
my SSL libs are static.

So, normally I would expect that the link command creating mod_ssl.so would
include the needed EXTRA_LIBS, but I don't see any provision for this.

Hacking modules/ssl/modules.mk and adding -lssl -lcrypto, and makeing
mod_ssl.la I do end up with a fully resolved mod_ssl.so

Am I missing something dreadfully obvious here ?

It would seem to me that other than the static httpd case, resolving all DSO
against -lssl -lcrypto is not the right thing to do. If my SSL libs were
shared, then each of the DSO modules would load the SSL libs regardless if
they were needed or not. Given the size of the SSL libs that is a pain.

The right answer (?) would seem to be configure setting SSL_LIBS, and
somehow inserting them into the proper place depending on where they are
needed (httpd link or the mod_ssl.so link).

So any words of wisdom or thoughts from you build gurus out there ?

thanks,
Dave Hill




Re: 2.0.40 Win32 binary packages borked

2002-08-15 Thread William A. Rowe, Jr.

At 11:14 AM 8/12/2002, Cliff Woolley wrote:

The .msi and .exe installers for 2.0.40 are borked... lots of default
stuff (license, etc), and the registry keys created are apparently for
2.0.39 instead of 2.0.40 (or so says one of the several PR's on the
matter).

This was my fault, entirely, so I'm starting with my apologies for leaping
without looking.

I'd upgraded my machine to InstallShield Developer (7.0.4) while the earlier
packages were all built with InstallShield for Windows Installer (1.5.3).

Apparently it's converters were not sufficiently complete.

How soon can these be rebuilt?  Should I pull the broken installers in the
meanwhile?

The new binaries are checked into the usual location.  I checked the
install against an nmake -f makefile.win INSTDIR=... style install, and
nothing seems to be missing.

Again, my apologies, and I'll take some time to figure out why the ISDE
flavor isn't correct.  Since we can no longer obtain ISWI, these need to
be migrated anyways.

And finally, I'll go back to my ancient project of building the perl classes
required to access the .msi and .cab (diamond) interfaces for building
these .msi files programmatically, so we don't run into these problems
again.  Really, ISDE (ISWI) were only needed to create the original
dialogs and other packaging.  Now that we have a complete package,
it 'should' be pretty trivial to rebuild the .cab file on the fly, and that 
would
only require perl and the SDK for someone else to churn out binaries.

Investigating.

Bill





Re: cvs commit: httpd-2.0/docs/manual/developer thread_safety.html

2002-08-15 Thread Jim Jagielski

[EMAIL PROTECTED] wrote:
 
 rasmus  2002/08/15 12:14:47
 
   Added:   docs/manual/developer thread_safety.html
   Log:
   Many more to come - just committing to get the framework in there so
   people can start adding to it.
   

VERY cool!

-- 
===
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
  A society that will trade a little liberty for a little order
 will lose both and deserve neither - T.Jefferson



Re: cvs commit: httpd-dist/binaries/win32 README.html

2002-08-15 Thread Cliff Woolley

On 15 Aug 2002 [EMAIL PROTECTED] wrote:

 wrowe   2002/08/15 11:46:46

   Modified:binaries/win32 README.html
   Log:
 Thanks to whomever simply commented this out... makes it simple to
 recover it :-)

You're welcome.  Thanks for doing the rebuild!

--Cliff




Re: daedalus is running 2.0.40 live

2002-08-15 Thread Ask Bjoern Hansen

On Fri, 9 Aug 2002, Greg Ames wrote:

 portable way to do this.  Maybe I should just hack apbounce to look for a
 listener on port 80 once a second or something.

I usually make my restart the httpd script look for the pid, run
apachectl stop and then wait until you can't kill(pid, 0) anymore
before proceeding.


 - ask

-- 
ask bjoern hansen, http://www.askbjoernhansen.com/ !try; do();




httpd-dist directory descriptions

2002-08-15 Thread David Shane Holden

The .htaccess file isn't setup correctly to display the descriptions of the
directories.

Shane




Index: .htaccess
===
RCS file: /home/cvspublic/httpd-dist/.htaccess,v
retrieving revision 1.78
diff -u -r1.78 .htaccess
--- .htaccess   9 Aug 2002 19:31:06 -   1.78
+++ .htaccess   16 Aug 2002 03:02:13 -
 -33,7 +33,7 
 AddDescription List of changes in 1.3 CHANGES_1.3
 AddDescription List of changes in 2.0 CHANGES_2.0
 AddDescription Developer PGP/GPG keys KEYS
-AddDescription Binary distributions binaries
-AddDescription Contributed software contrib
-AddDescription Old source amp; binaries old
-AddDescription Official patches patches
+AddDescription Binary distributions binaries/
+AddDescription Contributed software contrib/
+AddDescription Old source amp; binaries old/
+AddDescription Official patches patches/







Re[2]: Why can't ap_send_error_response() count on charset?

2002-08-15 Thread Denis Karavayev

Hello!

Well, it's maybe not so close to the subject... But...
I'm faced up with some problem with the type-map files (yes, for
example, with default error pages in Apache distribution). Who can
tell me, what is the next line (that can be inserted in type-map
files) exactly means:

Content-type: text/html;charset=WINDOWS-1251

This is from index.html.var (htdocs dir).
Ok, this is my problem: i just translated all error pages into my own
language (Russian), for example, next lines from HTTP_NOT_FOUND.html.var:

[... previous languages ...]

Content-language: ru
Content-type: text/html;charset=WINDOWS-1251
Body:--ru--
!--#set var=TITLE value=Object not found! --
!--#include virtual=include/top.html --

The requested URL was not found on this server. (Assume it's in
Russian).
Bla-bla-bla...

!--#include virtual=include/bottom.html --
--ru--

Is it Ok ;)??? It is Ok! But when i try to see it ;), i've got a
non readable page (page tagged in header such as it in
AddDefaultCharset (ISO-8859-1) charset). It seems that

Content-type: text/html;charset=WINDOWS-1251

means NOTHING (at last in terms of charset). It is simply not work (or
maybe i simply don't understand meaning of this line ;)??? I can put
all error text in the file and rewrite all Body section to

URI: error.html

but this will not change anything. I MUST add .ru.cp-2151 extension to
this file so mod_mime can wake up...

General question:
Is it possible to define a charset in type-map files (for Body
sections)???

   Best regards, Denis.




Re: httpd-dist directory descriptions

2002-08-15 Thread Cliff Woolley

On Thu, 15 Aug 2002, David Shane Holden wrote:

 The .htaccess file isn't setup correctly to display the descriptions of
 the directories.

Committed, thanks.

--Cliff




Re: Thread-unsafe libraries in httpd-2.0

2002-08-15 Thread William A. Rowe, Jr.

At 03:04 PM 8/15/2002, Justin Erenkrantz wrote:
On Thu, Aug 15, 2002 at 11:51:52AM -0700, Ian Holsman wrote:
  it's not as obvious, the proposal above forces the developer to say
  i verify my module will work with threaded

No, I'd much prefer that modules code their own checks for it.  A
simple check in the pre_config hook phase should be sufficient.

The answer i verify my module won't work threaded and emitting a
warning [or outright error] should be more than sufficient.

This allows PHP to collect the extensions it's loading and decide if
thread safety is a hazard or those extensions are explicitly trusted
for thread safety.

I think it's bogus to state that Apache 2.0 is causing the pain.  If you
don't want to be loaded in a threaded server, say so in your preconfig.

There's no reason to bloat all of Apache and it's well behaved modules
with extra code, when only a handful of modules care to report that
they can't be compiled for a threaded architecture.

Justin is right on here.

Bill