RE: [PATCH] remove some mutex locks in the worker MPM

2003-01-01 Thread Bill Stoddard
 it may also have to do with caching we were doing (mod_mem_cache crashed and
burned,
What version were you running?  What was the failure? If you can give me enough
info to debug the problem, I'll work on it.

Bill




Re: cvs commit: httpd-2.0/modules/aaa mod_authn_dbm.c

2003-01-01 Thread André Malo
* [EMAIL PROTECTED] wrote:

 nd  2002/12/31 20:08:26
 
   Modified:modules/aaa mod_authn_dbm.c
   Log:
   add support for digest authentication to the authn_dbm module. The
   key is $user:$realm (perl speaking), the value is the MD5-hash,
   optionally followed by a colon and other garbage.

hmm, although $user:$realm semantically _is_ the key, that causes the 
problem, that mod_authz_dbm won't support it (it currently doesn't support 
digest authentication anyway). What would be the best variant?

- do some magic, i.e. if AuthType digest then use $user and 
$user:$realm as lookup key (in which order?)

- make it configurable (additional argument to AuthDBMGroupFile?)

- consider a provider mechanism for authorization modules, too?

My favourites are the second or third option :)
better ideas?

nd
-- 
die (eval q-qq:Just Another Perl Hacker
:-)

# André Malo, http://www.perlig.de/ #



[PATCH 2] Remove mutex locks from worker MPM

2003-01-01 Thread Brian Pane
Here's an updated patch for the worker MPM.  It contains
the pool-recycling changes from my first patch yesterday,
plus a (mostly) mutex-free implementation of the idle worker
count.

The logic for this latest change is somewhat more complicated,
so I'd appreciate test results and/or code review from anyone
with the time and interest to check for race conditions.

Thanks,
Brian






[PATCH 2] Remove mutex locks from worker MPM

2003-01-01 Thread Brian Pane
Here's an updated patch for the worker MPM.  It contains
the pool-recycling changes from my first patch yesterday,
plus a (mostly) mutex-free implementation of the idle worker
count.

The logic for this latest change is somewhat more complicated,
so I'd appreciate test results and/or code review from anyone
with the time and interest to check for race conditions.

Thanks,
Brian


Index: server/mpm/worker/fdqueue.c
===
RCS file: /home/cvs/httpd-2.0/server/mpm/worker/fdqueue.c,v
retrieving revision 1.23
diff -u -r1.23 fdqueue.c
--- server/mpm/worker/fdqueue.c	2 Aug 2002 17:37:52 -	1.23
+++ server/mpm/worker/fdqueue.c	1 Jan 2003 18:57:56 -
@@ -57,6 +57,12 @@
  */
 
 #include fdqueue.h
+#include apr_atomic.h
+
+typedef struct recycled_pool {
+apr_pool_t *pool;
+struct recycled_pool *next;
+} recycled_pool;
 
 struct fd_queue_info_t {
 int idlers;
@@ -64,19 +70,27 @@
 apr_thread_cond_t *wait_for_idler;
 int terminated;
 int max_idlers;
-apr_pool_t**recycled_pools;
-int num_recycled;
+recycled_pool  *recycled_pools;
 };
 
 static apr_status_t queue_info_cleanup(void *data_)
 {
 fd_queue_info_t *qi = data_;
-int i;
 apr_thread_cond_destroy(qi-wait_for_idler);
 apr_thread_mutex_destroy(qi-idlers_mutex);
-for (i = 0; i  qi-num_recycled; i++) {
-apr_pool_destroy(qi-recycled_pools[i]);
+
+/* Clean up any pools in the recycled list */
+for (;;) {
+struct recycled_pool *first_pool = qi-recycled_pools;
+if (first_pool == NULL) {
+break;
+}
+if (apr_atomic_casptr((qi-recycled_pools), first_pool-next,
+  first_pool) == first_pool) {
+apr_pool_destroy(first_pool-pool);
+}
 }
+
 return APR_SUCCESS;
 }
 
@@ -98,9 +112,7 @@
 if (rv != APR_SUCCESS) {
 return rv;
 }
-qi-recycled_pools = (apr_pool_t **)apr_palloc(pool, max_idlers *
-   sizeof(apr_pool_t *));
-qi-num_recycled = 0;
+qi-recycled_pools = NULL;
 qi-max_idlers = max_idlers;
 apr_pool_cleanup_register(pool, qi, queue_info_cleanup,
   apr_pool_cleanup_null);
@@ -114,24 +126,53 @@
 apr_pool_t *pool_to_recycle)
 {
 apr_status_t rv;
-rv = apr_thread_mutex_lock(queue_info-idlers_mutex);
-if (rv != APR_SUCCESS) {
-return rv;
-}
-AP_DEBUG_ASSERT(queue_info-idlers = 0);
-AP_DEBUG_ASSERT(queue_info-num_recycled  queue_info-max_idlers);
+int prev_idlers;
+
+/* If we have been given a pool to recycle, atomically link
+ * it into the queue_info's list of recycled pools
+ */
 if (pool_to_recycle) {
-queue_info-recycled_pools[queue_info-num_recycled++] =
-pool_to_recycle;
+struct recycled_pool *new_recycle;
+new_recycle = (struct recycled_pool *)apr_palloc(pool_to_recycle,
+ sizeof(*new_recycle));
+new_recycle-pool = pool_to_recycle;
+for (;;) {
+new_recycle-next = queue_info-recycled_pools;
+if (apr_atomic_casptr((queue_info-recycled_pools),
+  new_recycle, new_recycle-next) ==
+new_recycle-next) {
+break;
+}
+}
 }
-if (queue_info-idlers++ == 0) {
-/* Only signal if we had no idlers before. */
-apr_thread_cond_signal(queue_info-wait_for_idler);
+
+/* Atomically increment the count of idle workers */
+for (;;) {
+prev_idlers = queue_info-idlers;
+if (apr_atomic_cas((queue_info-idlers), prev_idlers + 1, prev_idlers)
+== prev_idlers) {
+break;
+}
 }
-rv = apr_thread_mutex_unlock(queue_info-idlers_mutex);
-if (rv != APR_SUCCESS) {
-return rv;
+
+/* If this thread just made the idle worker count nonzero,
+ * wake up the listener. */
+if (prev_idlers == 0) {
+rv = apr_thread_mutex_lock(queue_info-idlers_mutex);
+if (rv != APR_SUCCESS) {
+return rv;
+}
+rv = apr_thread_cond_signal(queue_info-wait_for_idler);
+if (rv != APR_SUCCESS) {
+apr_thread_mutex_unlock(queue_info-idlers_mutex);
+return rv;
+}
+rv = apr_thread_mutex_unlock(queue_info-idlers_mutex);
+if (rv != APR_SUCCESS) {
+return rv;
+}
 }
+
 return APR_SUCCESS;
 }
 
@@ -139,34 +180,62 @@
   apr_pool_t **recycled_pool)
 {
 apr_status_t rv;
+
 *recycled_pool = NULL;
-rv = apr_thread_mutex_lock(queue_info-idlers_mutex);
-if (rv != APR_SUCCESS) {
-return rv;
-}
-AP_DEBUG_ASSERT(queue_info-idlers = 0);
-while ((queue_info-idlers == 0)  (!queue_info-terminated)) {
-  

Re: [PATCH 2] Remove mutex locks from worker MPM

2003-01-01 Thread Thom May
Hey Brian,
your patch seems to have been eaten by gremlins :-(
-Thom

* Brian Pane ([EMAIL PROTECTED]) wrote :
 Here's an updated patch for the worker MPM.  It contains
 the pool-recycling changes from my first patch yesterday,
 plus a (mostly) mutex-free implementation of the idle worker
 count.
 
 The logic for this latest change is somewhat more complicated,
 so I'd appreciate test results and/or code review from anyone
 with the time and interest to check for race conditions.
 
 Thanks,
 Brian
 
 



Re: [PATCH 2] Remove mutex locks from worker MPM

2003-01-01 Thread Brian Pane
On Wed, 2003-01-01 at 11:00, Thom May wrote:
 Hey Brian,
 your patch seems to have been eaten by gremlins :-(

Sorry about that, the send and attachment buttons on
this email program are right next to each other. :-)  I just
re-sent with the patch attached.

One other thing I should note: there are a couple of
platforms where you'll get better results by configuring
with --enable-nonportable-atomics=yes before building:

* Solaris on SPARC (as long as you don't need to run on pre-v8plus
  systems)
* Linux on x86 (as long as you don't need to run on 386 or
  earlier)

For these architectures, --enable-nonportable-atomics=yes
is needed to make APR use the opcodes for atomic CAS, rather
than emulating them with mutexes.

Brian





mod_mem_cache bad for large/busy files (Was: [PATCH] remove some mutex locks in the worker MPM)

2003-01-01 Thread David Burry
Apache 2.0.43, Solaris 8, Sun E220R, 4 gig memory, gig ethernet.  We tried
both Sun forte and gcc compilers.  The problem was mod_mem_cache was just
way too resource intensive when pounding on a machine that hard, trying to
see if everything would fit into the cache... cpu/mutexes were very high,
especially memory was out of control (we had many very large files, ranging
from half dozen to two dozen megs, the most popular of those were what we
really wanted cached), and we were running several hundred concurrent
connections at once.  Maybe a new cache loading/hit/removal algorithm that
works better for many hits to very large files would solve it I dunno.

We finally settled on listing out some of the most popular files out in the
httpd.conf file for mod_file_cache, but that presents a management problem
as what's most popular changes.  It would have been nicer if apache could
auto-sense the most popular files.  Also it seems mod_file_cache has a file
size limit but at least we got enough in there the disk wasn't bottlenecking
anymore...

Dave

- Original Message -
From: Bill Stoddard [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, January 01, 2003 6:38 AM
Subject: RE: [PATCH] remove some mutex locks in the worker MPM


  it may also have to do with caching we were doing (mod_mem_cache crashed
and
 burned,
 What version were you running?  What was the failure? If you can give me
enough
 info to debug the problem, I'll work on it.

 Bill





Re: mod_mem_cache bad for large/busy files (Was: [PATCH] removesome mutex locks in the worker MPM)

2003-01-01 Thread Brian Pane
On Wed, 2003-01-01 at 11:26, David Burry wrote:
 Apache 2.0.43, Solaris 8, Sun E220R, 4 gig memory, gig ethernet.  We tried
 both Sun forte and gcc compilers.  The problem was mod_mem_cache was just
 way too resource intensive when pounding on a machine that hard, trying to
 see if everything would fit into the cache... cpu/mutexes were very high,
 especially memory was out of control (we had many very large files, ranging
 from half dozen to two dozen megs, the most popular of those were what we
 really wanted cached), and we were running several hundred concurrent
 connections at once.  Maybe a new cache loading/hit/removal algorithm that
 works better for many hits to very large files would solve it I dunno.

I know of a couple of things that cause mutex contention in
mod_mem_cache:

* Too many malloc/free calls

  This may be easy to improve.  Currently, mod_mem_cache does
  many mallocs for strings and nested objects within a cache object.
  We could probably malloc one big buffer containing enough space
  to hold all those objects.

* Global lock around the hash table and priority queue

  This will be difficult to fix.  It's straightforward to provide
  thread-safe, highly-concurrent access to a hash table (either use
  a separate lock for each hash bucket, or use atomic-CAS based
  pointer swapping when traversing the hash chains).  The problem
  is that we need to read/update the priority queue as part of the
  same transaction in which we read/update the hash table, which
  leaves us stuck with a big global lock.

  If we could modify the mod_mem_cache design to not require the
  priority queue operations and the hash table operations to be
  done as part of the same critical region, I think that would
  open up the door to some major concurrency improvements.  But
  I'm not sure whether that's actually possible.

Brian





Re: [PATCH] remove hardcoding of suexec log location

2003-01-01 Thread Aaron Bannert
The log is generated from the suexec binary, not httpd, right?
Then we can't use a directive to control it and it needs to be
hardcoded for safety.

The patch below to make it relative to the logfiledir at
configure-time makes sense. +1

-aaron


On Tuesday, December 31, 2002, at 04:41  AM, David Reid wrote:


Maybe we should have another directive for the suexec log? But I agree 
it
shouldn't be hardcoded.

david

- Original Message -
From: Thom May [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, December 31, 2002 11:39 AM
Subject: [PATCH] remove hardcoding of suexec log location


This is to fix PR 15713
suexec-logfile has hardcoded default instead of being
placed in --logfiledir

I'm not sure it's right, though, since I'm not sure of the status of

suexec

on win32/other places where ap_config_layout.h isn't available.
-Thom


Index: support/suexec.h
===
RCS file: /home/cvspublic/httpd-2.0/support/suexec.h,v
retrieving revision 1.7
diff -u -u -r1.7 suexec.h
--- support/suexec.h 27 Sep 2002 23:53:04 - 1.7
+++ support/suexec.h 30 Dec 2002 12:10:17 -
@@ -62,6 +62,12 @@
 #define _SUEXEC_H

 /*
+ * Include ap_config_layout so we can work out where the default

htdocsdir

+ * and logsdir are.
+ */
+#include ap_config_layout.h
+
+/*
  * HTTPD_USER -- Define as the username under which Apache normally
  *   runs.  This is the only user allowed to execute
  *   this program.
@@ -117,7 +123,7 @@
  * debugging purposes.
  */
 #ifndef AP_LOG_EXEC
-#define AP_LOG_EXEC /usr/local/apache2/logs/cgi.log /* Need me? */
+#define AP_LOG_EXEC DEFAULT_EXP_LOGFILEDIR /suexec_log /* Need me? 
*/
 #endif

 /*
@@ -126,7 +132,7 @@
  * that can be used for suEXEC behavior.
  */
 #ifndef AP_DOC_ROOT
-#define AP_DOC_ROOT /usr/local/apache2/htdocs
+#define AP_DOC_ROOT DEFAULT_EXP_HTDOCSDIR
 #endif

 /*





Re: [PATCH] remove some mutex locks in the worker MPM

2003-01-01 Thread Aaron Bannert
The patch looks good at first glance. Have you done any testing
to see how much it improves performance (on UP and MP machines)
and if it has any effect when APR is build with generic atomics?

-aaron


On Tuesday, December 31, 2002, at 05:30  PM, Brian Pane wrote:


I'm working on replacing some mutex locks with atomic-compare-and-swap
based algorithms in the worker MPM, in order to get better concurrency
and lower overhead.

Here's the first change: take the pool recycling code out of the
mutex-protected critical region in the queue_info code.  Comments
welcome...

Next on my list is the code that synchronizes the idle worker count.
I think I can eliminate the need to lock a mutex except in the
special case where all the workers are busy.





Re: Mass Vhosting SuExec (was Re: [PATCH] remove hardcoding of suexec log location)

2003-01-01 Thread Colm MacCárthaigh
On Wed, Jan 01, 2003 at 10:43:18PM +, Thom May wrote:
 * Aaron Bannert ([EMAIL PROTECTED]) wrote :
  The log is generated from the suexec binary, not httpd, right?
  Then we can't use a directive to control it and it needs to be
  hardcoded for safety.

 The other issue for suexec is mass vhosting; this has somewhat different
 needs, and mostly results in ISPs patching suexec to do what they need,
 which seems like a bad thing unless the ISPs can sucessfully audit the
 resulting codebase.

It's a very bad thing, because in 99.99% of cases it's completely 
unneccessary!

 The real problem is that mass vhosting generates large numbers of document
 roots; covering them all with one docroot compiled into suexec can result
 in, eg, /home being set as the docroot.

/home is a very bad docroot, and I'd question the reasons behind
hosting virtual hosts in /home, the usual reason is for FTP/shell
access, but that can be solved with symlinks, or just setting
the homedir elsewhere. 

In general for sites with virtual hosts that need SuexecUserGroup
I set docroot to $prefix/vhosts, and put them all in there, problem
solved :)

 Compiling with a list of document roots sounds good in principal, but 
 we on average add a site an hour, recompiling suexec every hour 
 isn't particularily practical, and the
 configure args would be several miles long :-)

Every hour! Youch, but are you adding a VirtualHost and restarting
apache every hour ? If not, how are you mapping those URI's and
how are you associating them with a username/group ?

If you are, and if this is common, there is some limited justification
for getting suexec to support such situations. But against that is
the reality that in order to support it suexec would have to parse
every single configuration file, determine which VirtualHost blocks
have SuexecUserGroup directives and remember their Docroot, that's
an awful lot of work for something that's exec'd for every CGI
and is security critical.

As has been pointed out, if people really want to use /home, then
mod_rewrite [+mod_proxy +mod_userdir] is probably a much better 
way to go.

 It seems to me that a different binary would be the best path;
 suexec-mass-vhost or whatever. it needs to be able to work correctly with
 mod_vhost_alias, and it potentially needs to be able to take docroot
 arguments from httpd.conf.

suexec will never work correctly with vhost_alias, or mod_rewrite :)
How would you tell it what username/group to use ?

The whole point of these approaches to virtual hosting is to simplify
a long list of domains into one ruleset. That's not compatible with
having a different username/group for each one. Then again, if you
wanted to have them all run as the same user, there've been (now
incomplete) patches to allow SuexecUserGroup to work in Directory
blocks, see:

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9038

for one.

Aswell as the mass vhost stuff there's still the outstanding issue 
of making SHELLCMD work with suexec , see:

http://redbrick.dcu.ie/~colmmacc/patches/proc.patch

from the STATUS. Also maybe change the default 
permissions of the suexec binary to 4750 and
advise people to chgrp it to the group httpd
runs as. 

-- 
[EMAIL PROTECTED]PubKey: [EMAIL PROTECTED]  
Web: http://devnull.redbrick.dcu.ie/ 



Re: cvs commit: httpd-2.0/modules/filters mod_deflate.c

2003-01-01 Thread Justin Erenkrantz
--On Wednesday, January 1, 2003 8:31 PM + [EMAIL PROTECTED] wrote:


  @@ -239,6 +256,11 @@
   apr_bucket_brigade *bb, *proc_bb;
   } deflate_ctx;

  +#define LeaveNote(type, value) \
  +if (c-note##type##Name) \
  +apr_table_setn(r-notes, c-note##type##Name, \
  +   (ctx-stream.total_in  0) ? (value) : 
-)

We don't use mixed case for any definitions, and we require braces at
all times, and for macros longer than one line, we wrap it with a do
{} while (0) clause so that some compilers are a bit happier.

So, I would probably suggest something like:

#define leave_note(type, value) \
do { \
   if (c-note##type##Name) { \
   apr_table_setn(r-notes, c-note##type##Name, \
  (ctx-stream.total_in  0) ? (value) : -) \
   } \
} while (0)


 +LeaveNote(Input, apr_off_t_toa(r-pool, 
ctx-stream.total_in));

 +LeaveNote(Output, apr_off_t_toa(r-pool, 
ctx-stream.total_out));

 +LeaveNote(Ratio, apr_itoa(r-pool, (int)
 +  (ctx-stream.total_out * 
100 / ctx-stream.total_in)));

All of that said, I'm not really sure this code even merits being a
macro.  I'd rather see the conditional execution clear at the scope
where LeaveNote is called rather than hidden in its definition.
Yeah, it's slightly repetitive, but I'm not really buying what the
macro is getting us here.  IMHO, there should be an extremely high bar
to creating a macro.  -- justin



Re: cvs commit: httpd-2.0/modules/aaa mod_authn_dbm.c

2003-01-01 Thread Justin Erenkrantz
--On Wednesday, January 1, 2003 7:21 PM +0100 André Malo 
[EMAIL PROTECTED] wrote:

hmm, although $user:$realm semantically _is_ the key, that causes
the  problem, that mod_authz_dbm won't support it (it currently
doesn't support  digest authentication anyway). What would be the
best variant?

- do some magic, i.e. if AuthType digest then use $user and
$user:$realm as lookup key (in which order?)

- make it configurable (additional argument to AuthDBMGroupFile?)

- consider a provider mechanism for authorization modules, too?

My favourites are the second or third option :)
better ideas?


I would probably implement choice one for now.  ($user:$realm first, 
then $user.)

Note that I always planned on adding a provider mechanism for 
authorization modules, but somehow got sidetracked on that.  But, 
yeah, that should definitely happen, too.  =)  (Choice 2 doesn't make 
a whole lot of sense to me.)  -- justin


[STATUS] (apache-1.3) Wed Jan 1 23:45:14 EST 2003

2003-01-01 Thread Rodent of Unusual Size
APACHE 1.3 STATUS:  -*-text-*-
  Last modified at [$Date: 2002/10/31 05:57:52 $]

Release:

   1.3.28-dev: In development
   1.3.27: Tagged September 30, 2002. Announced Oct 3, 2002.
   1.3.26: Tagged June 18, 2002.
   1.3.25: Tagged June 17, 2002. Not released.
   1.3.24: Tagged Mar 21, 2002. Announced Mar 22, 2002.
   1.3.23: Tagged Jan 21, 2002.
   1.3.22: Tagged Oct 8, 2001.  Announced Oct 12, 2001.
   1.3.21: Not released.
 (Pulled for htdocs/manual config mismatch. t/r Oct 5, 2001)
   1.3.20: Tagged and rolled May 15, 2001. Announced May 21, 2001.
   1.3.19: Tagged and rolled Feb 26, 2001. Announced Mar 01, 2001.
   1.3.18: Tagged and rolled Not released.
 (Pulled because of an incorrect unescaping fix. t/r Feb 19, 2001)
   1.3.17: Tagged and rolled Jan 26, 2001. Announced Jan 29, 2001.
   1.3.16: Not released.
 (Pulled because of vhosting bug. t/r Jan 20, 2001)
   1.3.15: Not released.
 (Pulled due to CVS dumping core during the tagging when it
  reached src/os/win32/)
   1.3.14: Tagged and Rolled Oct 10, 2000.  Released/announced on the 13th.
   1.3.13: Not released.
 (Pulled in the first minutes due to a Netware build bug)
   1.3.12: Tagged and rolled Feb. 23, 2000. Released/announced on the 25th.
   1.3.11: Tagged and rolled Jan. 19, 2000. Released/announced on the 21st.
   1.3.10: Not released.
 (Pulled at last minute due to a build bug in the MPE port)
1.3.9: Tagged and rolled on Aug. 16. Released and announced on 19th.
1.3.8: Not released.
1.3.7: Not released.
1.3.6: Tagged and rolled on Mar. 22. Released and announced on 24th.
1.3.5: Not released.
1.3.4: Tagged and rolled on Jan. 9.  Released on 11th, announced on 12th.
1.3.3: Tagged and rolled on Oct. 7.  Released on 9th, announced on 10th.
1.3.2: Tagged and rolled on Sep. 21. Announced and released on 23rd.
1.3.1: Tagged and rolled on July 19. Announced and released.
1.3.0: Tagged and rolled on June 1.  Announced and released on the 6th.
   
2.0  : Available for general use, see httpd-2.0 repository

RELEASE SHOWSTOPPERS:

RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:

   * Current vote on 2 PRs for inclusion:
  Bugz #9181 (Unable to set headers on non-2XX responses)
+1: Martin, Jim
  Gnats #10246 (Add ProxyConnAllow directive)
+0: Martin (or rather -.5, see dev@ Message
[EMAIL PROTECTED])

* htpasswd.c and htdigest.c use tmpnam()... consider using
  mkstemp() when available.
Message-ID: [EMAIL PROTECTED]
Status:

* Dean's unescaping hell (unescaping the various URI components
  at the right time and place, esp. unescaping the host name).
Message-ID: [EMAIL PROTECTED]
Status:

* Martin observed a core dump because a ipaddr_chain struct contains
  a NULL-server pointer when being dereferenced by invoking httpd -S.
Message-ID: [EMAIL PROTECTED]
Status: Workaround enabled. Clean solution can come after 1.3.19

* long pathnames with many components and no AllowOverride None
  Workaround is to define Directory / with AllowOverride None,
  which is something all sites should do in any case.
Status: Marc was looking at it.  (Will asks 'wasn't this patched?')

* Ronald Tschalär's patch to mod_proxy to allow other modules to
  set headers too (needed by mod_auth_digest)
Message-ID: [EMAIL PROTECTED]
Status:


Available Patches (Most likely, will be ported to 2.0 as appropriate):

   *  A rewrite of ap_unparse_uri_components() by Jeffrey W. Baker
 [EMAIL PROTECTED] to more fully close some segfault potential.
Message-ID: Pine.LNX.4.21.0102102350060.6815-20@desktop
Status:  Jim +1 (for 1.3.19), Martin +0

* Andrew Ford's patch (1999/12/05) to add absolute times to mod_expires
Message-ID: [EMAIL PROTECTED]
Status: Martin +1, Jim +1, Ken +1 (on concept)

* Raymond S Brand's path to mod_autoindex to fix the header/readme
  include processing so the envariables are correct for the included
  documents.  (Actually, there are two variants in the patch message,
  for two different ways of doing it.)
Message-ID: [EMAIL PROTECTED]
Status: Martin +1(concept)

* Jayaram's patch (10/27/99) for bugfix to mod_autoindex
  IndexIgnore file-extension should hide the files with this file-
  extension in directory listings. This was NOT happening because the 
  total filename was being compared with the file-extension.
  Status: Martin +1(untested), Ken +1(untested)
   
* Salvador Ortiz Garcia [EMAIL PROTECTED]' patch to allow DirectoryIndex
  to refer to URIs for non-static resources.
MID: [EMAIL PROTECTED]
Status: Ken +1 (on concept), Lars +1 (on concept)

* Brian Havard's patch 

[STATUS] (httpd-2.0) Wed Jan 1 23:45:22 EST 2003

2003-01-01 Thread Rodent of Unusual Size
APACHE 2.1 STATUS:  -*-text-*-
Last modified at [$Date: 2002/12/03 18:26:44 $]

Release [NOTE that only Alpha/Beta releases occur in 2.1 development]:

2.1.0   : in development

Please consult the following STATUS files for information
on related projects:

* srclib/apr/STATUS
* srclib/apr-util/STATUS
* docs/STATUS

Contributors looking for a mission:

* just do an egrep on TODO or XXX and see what's there


CURRENT RELEASE NOTES:


RELEASE SHOWSTOPPERS:


CURRENT VOTES:

* httpd-std.conf and friends

  a) httpd-std.conf should be tailored by install (from src or
 binbuild) even if user has existing httpd.conf
 +1:   trawick, slive, gregames, ianh, Ken, wrowe, jwoolley, jim
   wrowe - prefer httpd.default.conf to avoid ambiguity with cvs

  b) tailored httpd-std.conf should be copied by install to
 sysconfdir/examples
 -0:   striker

  c) tailored httpd-std.conf should be installed to
 sysconfdir/examples or manualdir/exampleconf/
 +1:   slive, trawick, Ken

  d) Installing a set of default config files when upgrading a server
 doesn't make ANY sense at all.
 +1:   ianh - medium/big sites don't use 'standard config' anyway, as it
  usually needs major customizations
 -1:   Ken, wrowe, jwoolley, jim
   wrowe - diff is wonderful when comparing old/new default configs,
   even for customized sites that ianh mentions
   jim - ... assuming that the default configs have been updated
 with the required inline docs to explain the
 changes

* If the parent process dies, should the remaining child processes
  gracefully self-terminate. Or maybe we should make it a runtime
  option, or have a concept of 2 parent processes (one being a 
  hot spare).
  See: Message-ID: [EMAIL PROTECTED]

  Self-destruct: Ken, Martin
  Not self-destruct: BrianP, Ian, Cliff, BillS
  Make it runtime configurable: Aaron, jim, Justin, wrowe, rederpj

  /* The below was a concept on *how* to handle the problem */
  Have 2 parents: +1: jim
  -1: Justin, wrowe, rederpj
  +0: Martin (while standing by, could it do
  something useful?)

* Make the worker MPM the default MPM for threaded Unix boxes.
  +1:   Justin, Ian, Cliff, BillS, striker, wrowe
  +0:   BrianP, Aaron (mutex contention is looking better with the
latest code, let's continue tuning and testing), rederpj, jim
  -0:   Lars

RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:

* There is a bug in how we sort some hooks, at least the pre-config
  hook.  The first time we call the hooks, they are in the correct 
  order, but the second time, we don't sort them correctly.  Currently,
  the modules/http/config.m4 file has been renamed to 
  modules/http/config2.m4 to work around this problem, it should moved
  back when this is fixed.

OtherBill offers that this is a SERIOUS problem.  We do not sort
correctly by the ordering arguments passed to the register hook
functions.  This was proven when I reordered the open_logs hook
to attempt to open the error logs prior to the access logs.  Possibly
the entire sorting code needs to be refactored.

* pipes deadlock on all platforms with limited pipe buffers (e.g. both
  Linux and Win32, as opposed to only Win32 on 1.3).  The right solution
  is either GStein's proposal for a CGI Brigade, or OtherBill's proposal
  for Poll Buckets for Polling Filter Chains.  Or maybe both :-)

* All handlers should always send content down even if r-header_only
  is set.  If not, it means that the HEAD requests don't generate the
  same headers as a GET which is wrong.

* HP/UX 10.20: compile breakage in APR.  Looks like it should be easy
  to fix, probably just some extraneous #include's that are fouling
  things up.
  PR: 9457
  Jeff: See my reply and patch in the PR (and previous commit to
  stop using pipe as a field name).  If patch is committed, we
  should be okay.  I'll wait to see if the user tests the patch.
  Update by Jeff 20020722: I got an account on HP 10.20.  It looks
  like some of the APR thread detection is screwed up.  If we find
  pthread.h but we can't compile the pthread test program we still
  think we can use threads.  For that reason, the patch I posted
  to the PR won't work as-is since a failed compile of the test
  program means nothing.

* exec cmd and suexec arg-passing enhancements
  Status: Patches proposed
  Message-ID: [EMAIL PROTECTED]
  (see the proc.patch and suexec-shell.patch links in this message)

* The 2.0.36 worker MPM graceless shutdown changes work 

[patch] include/util_filter.h

2003-01-01 Thread Stas Bekman
add missing @param docs

Index: include/util_filter.h
===
RCS file: /home/cvspublic/httpd-2.0/include/util_filter.h,v
retrieving revision 1.74
diff -u -r1.74 util_filter.h
--- include/util_filter.h   28 Jun 2002 08:40:23 -  1.74
+++ include/util_filter.h   2 Jan 2003 05:42:49 -
@@ -328,6 +328,8 @@
  *
  * @param name The name to attach to the filter function
  * @param filter_func The filter function to name
+ * @param filter_init The function to call before the filter handlers
+ *are invoked
  * @param ftype The type of filter function, either ::AP_FTYPE_CONTENT 
or ::
  *AP_FTYPE_CONNECTION
  * @see add_input_filter()
@@ -344,6 +346,8 @@
  *
  * @param name The name to attach to the filter function
  * @param filter_func The filter function to name
+ * @param filter_init The function to call before the filter handlers
+ *are invoked
  * @param ftype The type of filter function, either ::AP_FTYPE_CONTENT or
  *  ::AP_FTYPE_CONNECTION
  * @see ap_add_output_filter()


__
Stas BekmanJAm_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