Re: is httpd a valid way to start Apache?

2002-05-22 Thread Manoj Kasichainula

On Thu, May 16, 2002 at 10:16:56PM -0701, Jos Backus wrote:
 On Thu, May 16, 2002 at 07:27:46PM -0700, Manoj Kasichainula wrote:
  I've (mostly) written replacements for supervise, setuidgid, and
  tcpserver. They use Single Unix APIs, haven't been ported to APR, and
  have no docs yet, but they are working for me.
  
  I imagine porting them to APR wouldn't be too painful, though they
  wouldn't remain the svelte 4-8kB binaries they are today. :)
 
 Interesting. I'm not sure how much benefit there would be from using APR
 though.

Mainly portability to older Unixes that don't support some of the more
modern calls I used (or that break Single Unix in ways that Linux
doesn't). I guess autoconf, etc. would do the job as well.

  Are people interested in this code?
 
 I for one would be interested in seeing this.

http://www.io.com/~manoj/file/mktool-0.0.7.tar.gz

I've only built it on my Linux boxes; I haven't even tried FreeBSD
yet, though I did try to avoid Linuxisms. The supervise replacement is
called babysit (so it wouldn't be confused with the djb tool it
tries to work as).

I'll hopefully clean it up a bit more, and maybe even test and doc it
more next week.

 I may be able to sell this to
 the FreeBSD people for inclusion in the base OS if the license allows it.

That won't be a problem. :) 

 Do you also have equivalents to svc, svstat and svok?

I haven't written svc or svstat replacements yet; I've just used 'echo
-n dx  directory/control' in my scripts in the mean time. But they
will be easy.  There is an svok workalike called bsok in the tarball
though.




Development documentation

2002-05-22 Thread Miguel Camargo

Hello:

I am new in the list and i don´t know if this is the correct place for my 
problem.

I am doing a proyect with Apache and i need to know how works Apache 
internally. I need to look into its source code and try to understand how it 
goes more or less.

My problem is that i have downloaded the latest version of the server 
httpd-2.0.36 and i have been looking into its source code but is really 
complex to try to understand it looking at first into the code, and i would 
like to know if there is some kind of guide or document anywhere that could 
explain in some way the source tree structure and the internals of the 
server, that could guide me to understand the source tree of apache.

I apologize if this question is not apropiate in this mailing list.

Thank you!

_
Únase con MSN Hotmail al servicio de correo electrónico más grande del 
mundo. http://www.hotmail.com




Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Bill Stoddard

Is there a unix equivalent to the Win32 Sleep(0) call? If so, then we can rip out all 
this
cruft and use the patch I posted earlier.

Bill

- Original Message -
From: Brian Pane [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Tuesday, May 21, 2002 8:08 PM
Subject: [PATCH 2] worker MPM deadlock


 Here is an updated worker patch.  It fixes a race condition
 that the first patch didn't: it was possible for the listener
 thread to push multiple connections onto the fd queue between
 the cond_signal and the subsequent wakeup of the next worker.
 This caused problems because the idle worker count, which the
 listener used to decide when to accept more connections, didn't
 get decremented until the worker woke up.  Thus the listener
 could overflow the connection queue.

 The fix, as implemented in this new patch, is to make the listener
 block if either: 1) there are no idle workers, or 2) the queue is
 full.

 This patch isn't a complete fix, as there is now an error case
 in which the listener thread fails to exit during shutdown.  It
 needs some more testing and cleanup work.

 Meanwhile, I'm going to take another look at leader/follower,
 because IMHO the worker synchronization logic is getting far too
 complicated.

 --Brian







 Index: server/mpm/worker/fdqueue.h
 ===
 RCS file: /home/cvs/httpd-2.0/server/mpm/worker/fdqueue.h,v
 retrieving revision 1.19
 diff -u -r1.19 fdqueue.h
 --- server/mpm/worker/fdqueue.h 28 Apr 2002 23:12:35 - 1.19
 +++ server/mpm/worker/fdqueue.h 21 May 2002 23:57:16 -
 @@ -71,16 +71,6 @@
  #endif
  #include apr_errno.h

 -typedef struct fd_queue_info_t fd_queue_info_t;
 -
 -apr_status_t ap_queue_info_create(fd_queue_info_t **queue_info,
 -  apr_pool_t *pool, int max_idlers);
 -apr_status_t ap_queue_info_set_idle(fd_queue_info_t *queue_info,
 -apr_pool_t *pool_to_recycle);
 -apr_status_t ap_queue_info_wait_for_idler(fd_queue_info_t *queue_info,
 -  apr_pool_t **recycled_pool);
 -apr_status_t ap_queue_info_term(fd_queue_info_t *queue_info);
 -
  struct fd_queue_elem_t {
  apr_socket_t  *sd;
  apr_pool_t*p;
 @@ -94,13 +84,19 @@
  apr_thread_mutex_t *one_big_mutex;
  apr_thread_cond_t  *not_empty;
  int terminated;
 +int idlers;
 +apr_thread_cond_t  *idlers_available;
 +apr_pool_t**recycled_pools;
 +int num_recycled;
  };
  typedef struct fd_queue_t fd_queue_t;

  apr_status_t ap_queue_init(fd_queue_t *queue, int queue_capacity, apr_pool_t *a);
  apr_status_t ap_queue_push(fd_queue_t *queue, apr_socket_t *sd, apr_pool_t *p);
 -apr_status_t ap_queue_pop(fd_queue_t *queue, apr_socket_t **sd, apr_pool_t **p);
 +apr_status_t ap_queue_pop(fd_queue_t *queue, apr_socket_t **sd, apr_pool_t **p,
 +  apr_pool_t **recycled);
  apr_status_t ap_queue_interrupt_all(fd_queue_t *queue);
 +apr_status_t ap_queue_wait_for_idler(fd_queue_t *queue, apr_pool_t **recycled);
  apr_status_t ap_queue_term(fd_queue_t *queue);

  #endif /* FDQUEUE_H */
 Index: server/mpm/worker/fdqueue.c
 ===
 RCS file: /home/cvs/httpd-2.0/server/mpm/worker/fdqueue.c,v
 retrieving revision 1.22
 diff -u -r1.22 fdqueue.c
 --- server/mpm/worker/fdqueue.c 29 Apr 2002 01:57:39 - 1.22
 +++ server/mpm/worker/fdqueue.c 21 May 2002 23:57:16 -
 @@ -58,138 +58,6 @@

  #include fdqueue.h

 -struct fd_queue_info_t {
 -int idlers;
 -apr_thread_mutex_t *idlers_mutex;
 -apr_thread_cond_t *wait_for_idler;
 -int terminated;
 -int max_idlers;
 -apr_pool_t**recycled_pools;
 -int num_recycled;
 -};
 -
 -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]);
 -}
 -return APR_SUCCESS;
 -}
 -
 -apr_status_t ap_queue_info_create(fd_queue_info_t **queue_info,
 -  apr_pool_t *pool, int max_idlers)
 -{
 -apr_status_t rv;
 -fd_queue_info_t *qi;
 -
 -qi = apr_palloc(pool, sizeof(*qi));
 -memset(qi, 0, sizeof(*qi));
 -
 -rv = apr_thread_mutex_create(qi-idlers_mutex, APR_THREAD_MUTEX_DEFAULT,
 - pool);
 -if (rv != APR_SUCCESS) {
 -return rv;
 -}
 -rv = apr_thread_cond_create(qi-wait_for_idler, pool);
 -if (rv != APR_SUCCESS) {
 -return rv;
 -}
 -qi-recycled_pools = (apr_pool_t **)apr_palloc(pool, max_idlers *
 -   sizeof(apr_pool_t *));
 -qi-num_recycled = 

Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Jeff Trawick

Bill Stoddard [EMAIL PROTECTED] writes:

 Is there a unix equivalent to the Win32 Sleep(0) call? If so, then we can rip out 
all this
 cruft and use the patch I posted earlier.

google for pthread_yield() and compare the doc with the doc for
Win32's Sleep(0).  I suspect it is the same as long as we're dealing
with pthreads.

-- 
Jeff Trawick | [EMAIL PROTECTED]
Born in Roswell... married an alien...



RE: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Ryan Bloom

 From: [EMAIL PROTECTED] [mailto:trawick@rdu88-251-
 
 Bill Stoddard [EMAIL PROTECTED] writes:
 
  Is there a unix equivalent to the Win32 Sleep(0) call? If so, then
we
 can rip out all this
  cruft and use the patch I posted earlier.
 
 google for pthread_yield() and compare the doc with the doc for
 Win32's Sleep(0).  I suspect it is the same as long as we're dealing
 with pthreads.

The biggest problem with pthread_yield is that it doesn't always do
anything.  Some pthreads implementations don't really implement
pthread_yield, in fact, if I remember correctly AIX is one of those.  I
could be wrong about AIX though.  I do know that when I first wrote the
APR thread library, I specifically left out yield because it had
different results on different platforms.

Ryan





Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Bill Stoddard


  From: [EMAIL PROTECTED] [mailto:trawick@rdu88-251-
 
  Bill Stoddard [EMAIL PROTECTED] writes:
 
   Is there a unix equivalent to the Win32 Sleep(0) call? If so, then
 we
  can rip out all this
   cruft and use the patch I posted earlier.
 
  google for pthread_yield() and compare the doc with the doc for
  Win32's Sleep(0).  I suspect it is the same as long as we're dealing
  with pthreads.

 The biggest problem with pthread_yield is that it doesn't always do
 anything.  Some pthreads implementations don't really implement
 pthread_yield, in fact, if I remember correctly AIX is one of those.

You are thinking about the old draft 7 pthread implementation in AIX 4.? (where ?=2 if 
I
recall correctly).

 I
 could be wrong about AIX though.  I do know that when I first wrote the
 APR thread library, I specifically left out yield because it had
 different results on different platforms.

You may be right but I would -hope- that a spec pthread implementation would handle
pthread_yield() correctly...

Bill





RE: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Ryan Bloom


Copying APR, because this is becoming an APR issue quickly.

   From: [EMAIL PROTECTED] [mailto:trawick@rdu88-251-
  
   Bill Stoddard [EMAIL PROTECTED] writes:
  
Is there a unix equivalent to the Win32 Sleep(0) call? If so,
then
  we
   can rip out all this
cruft and use the patch I posted earlier.
  
   google for pthread_yield() and compare the doc with the doc for
   Win32's Sleep(0).  I suspect it is the same as long as we're
dealing
   with pthreads.
 
  The biggest problem with pthread_yield is that it doesn't always do
  anything.  Some pthreads implementations don't really implement
  pthread_yield, in fact, if I remember correctly AIX is one of those.
 
 You are thinking about the old draft 7 pthread implementation in AIX
4.?
 (where ?=2 if I
 recall correctly).

Yep, you are correct, even down to AIX 4.2.

 
  I
  could be wrong about AIX though.  I do know that when I first wrote
the
  APR thread library, I specifically left out yield because it had
  different results on different platforms.
 
 You may be right but I would -hope- that a spec pthread implementation
 would handle
 pthread_yield() correctly...

The problem is that Single Unix doesn't even define pthread_yield, and
neither does the pthreads spec if I am reading it right.  It looks like
they both require sched_yield, which should do the same thing, however.
All I am saying is that this isn't a panacea, a lot more research would
be needed before pthread_ or sched_ yield could be considered portable.

Ryan





Re: Development documentation

2002-05-22 Thread Daniel Lopez


http://httpd.apache.org/docs-2.0/developer/

Most people do not need to modify the server itself, but rather just write a
module. In that case pick one of the simple ones that come in the
distribution and see how things work.

Have a look at Doug MacEachern's Writing Apache Modules with mod_perl and C
It is an excellent book, but only covers 1.3 but a lot of the concepts are
very similar and will help you get started

Daniel

On Wed, May 22, 2002 at 02:17:49PM +0200, Miguel Camargo wrote:
 Hello:
 
 I am new in the list and i don´t know if this is the correct place for my 
 problem.
 
 I am doing a proyect with Apache and i need to know how works Apache 
 internally. I need to look into its source code and try to understand how 
 it goes more or less.
 
 My problem is that i have downloaded the latest version of the server 
 httpd-2.0.36 and i have been looking into its source code but is really 
 complex to try to understand it looking at first into the code, and i would 
 like to know if there is some kind of guide or document anywhere that could 
 explain in some way the source tree structure and the internals of the 
 server, that could guide me to understand the source tree of apache.
 
 I apologize if this question is not apropiate in this mailing list.
 
 Thank you!
 
 _
 Únase con MSN Hotmail al servicio de correo electrónico más grande del 
 mundo. http://www.hotmail.com



Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Brian Pane

Bill Stoddard wrote:

Is there a unix equivalent to the Win32 Sleep(0) call? If so, then we can rip out all 
this
cruft and use the patch I posted earlier.


Can you repost your patch (or post a link to an archived copy)?

Thanks,
--Brian






Is Apache Proxy Half-Duplex?

2002-05-22 Thread Zvi Har'El

Hello,

Experimenting with an Apache Proxy,  I noticed that in version 1.3 (the latest
cvs snapshot) it behaves in a half-duplex fashion. That is, it doesn't read the
backend server response until it have finished transmitting the client's
request body. This is pretty annoying, mainly if the request involves a very
large post (file upload), and the backend sever response, after the headers,
says Please wait patiently I wonder: are there any intentions to change
this? It seems that full-duplex operation requires two threads per proxy, which
is not how the Apache proxy server works. Is the situation different, or going
to be different, in Apache 2? Just for reference, the Squid proxy doesn't
suffer from this deficiency.

Thanks for you attention,

Zvi.

-- 
Dr. Zvi Har'El mailto:[EMAIL PROTECTED] Department of Mathematics
tel:+972-54-227607   Technion - Israel Institute of Technology
fax:+972-4-8324654 http://www.math.technion.ac.il/~rl/ Haifa 32000, ISRAEL
If you can't say somethin' nice, don't say nothin' at all. -- Thumper (1942)
Wednesday, 12 Sivan 5762, 22 May 2002,  6:03PM



Re: [PATCH] exec cmd working with suexec

2002-05-22 Thread Colm MacCárthaigh

On Tue, May 21, 2002 at 01:03:03AM +0100, Colm MacCárthaigh wrote:
 The following patch reverts to the previous and documented
 bevahiour (exhibited by 1.3). Currently !--exec cmd
 does not work with suexec enabled as the proc.c will try to
 run : shell -c suexec uid gid ... so on.
 
snip patch

I should have mentioned, this patch resolves PR 8291. Also
after applying this patch, SSI + suexec works fully except
that

!--#include file=some.cgi--

will run the cgi as the webserver user, and not the suexec
user. Obviously a security hole. include virtual is not
affected, Nor is the fsize directive. (they all use 
subrequests)

The patch below fixes it by using the ap_sub_req_lookup_uri
instead of ap_sub_req_lookup_file. Since the functionality of
_uri is a superset of _file (afaict) this means that nothing
valid in an include file directive will break. But it
also means that some of what was previously invalid will
(query string etc). Since include file has deprecated
support anyway .. I'm not sure how big a deal it is that
mod_include wouldnt be enforcing what include file should 
only be able to do.

Colm

Index: modules/filters/mod_include.c
===
RCS file: /home/cvspublic/httpd-2.0/modules/filters/mod_include.c,v
retrieving revision 1.222
diff -u -r1.222 mod_include.c
--- modules/filters/mod_include.c   17 May 2002 11:33:09 -  1.222
+++ modules/filters/mod_include.c   22 May 2002 09:26:39 -
 -1263,7 +1263,7 
 in parsed file %s;
 }
 else {
-rr = ap_sub_req_lookup_file(parsed_string, r, f-next);
+rr = ap_sub_req_lookup_uri(parsed_string, r, f-next);
 }
 }
 else {



Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Bill Stoddard

I don't know if this will actually work, haven't fully considered all failure
possibilities. I think there are better implementations of the basic idea. Need to use
atomic increment/decrement and replace the yield() call with pthread_yield() or
whatever...

Bill

===
RCS file: /home/cvs/httpd-2.0/server/mpm/worker/worker.c,v
retrieving revision 1.117
diff -u -r1.117 worker.c
--- worker.c 18 Apr 2002 17:46:20 - 1.117
+++ worker.c 26 Apr 2002 17:59:16 -
@@ -156,6 +156,7 @@
  */

 int ap_threads_per_child = 0; /* Worker threads per child */
+static int worker_thread_cnt = 0;
 static int ap_daemons_to_start = 0;
 static int min_spare_threads = 0;
 static int max_spare_threads = 0;
@@ -693,6 +694,14 @@
 }
 if (listener_may_exit) break;

+/* If no worker threads are available, yield our quanta and try again
+ * later
+ */
+if (!worker_thread_cnt) {
+yield();
+continue;
+}
+
 if ((rv = SAFE_ACCEPT(apr_proc_mutex_lock(accept_mutex)))
 != APR_SUCCESS) {
 int level = APLOG_EMERG;
@@ -791,6 +800,7 @@
 signal_threads(ST_GRACEFUL);
 }
 if (csd != NULL) {
+worker_thread_cnt--;
 rv = ap_queue_push(worker_queue, csd, ptrans,
recycled_pool);
 if (rv) {
@@ -852,6 +862,7 @@

 while (!workers_may_exit) {
 ap_update_child_status_from_indexes(process_slot, thread_slot, SERVER_READY,
NULL);
+worker_thread_cnt++;
 rv = ap_queue_pop(worker_queue, csd, ptrans, last_ptrans);
 last_ptrans = NULL;



- Original Message -
From: Brian Pane [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: Wednesday, May 22, 2002 11:52 AM
Subject: Re: [PATCH 2] worker MPM deadlock


 Bill Stoddard wrote:

 Is there a unix equivalent to the Win32 Sleep(0) call? If so, then we can rip out 
all
this
 cruft and use the patch I posted earlier.
 

 Can you repost your patch (or post a link to an archived copy)?

 Thanks,
 --Brian







Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Brian Pane

Bill Stoddard wrote:

I don't know if this will actually work, haven't fully considered all failure
possibilities. I think there are better implementations of the basic idea. Need to use
atomic increment/decrement and replace the yield() call with pthread_yield() or
whatever...

Bill

===
RCS file: /home/cvs/httpd-2.0/server/mpm/worker/worker.c,v
retrieving revision 1.117
diff -u -r1.117 worker.c
--- worker.c 18 Apr 2002 17:46:20 - 1.117
+++ worker.c 26 Apr 2002 17:59:16 -
 -156,6 +156,7 
  */

 int ap_threads_per_child = 0; /* Worker threads per child */
+static int worker_thread_cnt = 0;
 static int ap_daemons_to_start = 0;
 static int min_spare_threads = 0;
 static int max_spare_threads = 0;
 -693,6 +694,14 
 }
 if (listener_may_exit) break;

+/* If no worker threads are available, yield our quanta and try again
+ * later
+ */
+if (!worker_thread_cnt) {
+yield();
+continue;
+}
+
 if ((rv = SAFE_ACCEPT(apr_proc_mutex_lock(accept_mutex)))
 != APR_SUCCESS) {
 int level = APLOG_EMERG;
 -791,6 +800,7 
 signal_threads(ST_GRACEFUL);
 }
 if (csd != NULL) {
+worker_thread_cnt--;
 rv = ap_queue_push(worker_queue, csd, ptrans,
recycled_pool);
 if (rv) {
 -852,6 +862,7 

 while (!workers_may_exit) {
 ap_update_child_status_from_indexes(process_slot, thread_slot, SERVER_READY,
NULL);
+worker_thread_cnt++;
 rv = ap_queue_pop(worker_queue, csd, ptrans, last_ptrans);
 last_ptrans = NULL;


Thanks for re-posting.  At first glance, what I like about this patch is
that it creates a model in which the workers produce tokens and the 
listener
consumes the tokens.  This removes some of the race conditions associated
with the my patch in which the workers do both the increment and the 
decrement.

However, there's a problem with this approach (aside from the whole issue of
spinning around the (worker_thread_count != 0) check).  If the 
ap_queue_pop()
function returns without actually acquiring a connection, you'll end up
doubly incrementing the idle worker count (as the worker loop enters its
next iteration).  This can happen if the cond_wait gets interrupted.  I
believe Aaron has some test cases in which this has happened, and I saw
what I think is this same phenomenon yesterday when debugging.

--Brian





Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Bill Stoddard



 Bill Stoddard wrote:

 I don't know if this will actually work, haven't fully considered all failure
 possibilities. I think there are better implementations of the basic idea. Need to 
use
 atomic increment/decrement and replace the yield() call with pthread_yield() or
 whatever...
 
 Bill
 
 ===
 RCS file: /home/cvs/httpd-2.0/server/mpm/worker/worker.c,v
 retrieving revision 1.117
 diff -u -r1.117 worker.c
 --- worker.c 18 Apr 2002 17:46:20 - 1.117
 +++ worker.c 26 Apr 2002 17:59:16 -
  -156,6 +156,7 
   */
 
  int ap_threads_per_child = 0; /* Worker threads per child */
 +static int worker_thread_cnt = 0;
  static int ap_daemons_to_start = 0;
  static int min_spare_threads = 0;
  static int max_spare_threads = 0;
  -693,6 +694,14 
  }
  if (listener_may_exit) break;
 
 +/* If no worker threads are available, yield our quanta and try again
 + * later
 + */
 +if (!worker_thread_cnt) {
 +yield();
 +continue;
 +}
 +
  if ((rv = SAFE_ACCEPT(apr_proc_mutex_lock(accept_mutex)))
  != APR_SUCCESS) {
  int level = APLOG_EMERG;
  -791,6 +800,7 
  signal_threads(ST_GRACEFUL);
  }
  if (csd != NULL) {
 +worker_thread_cnt--;
  rv = ap_queue_push(worker_queue, csd, ptrans,
 recycled_pool);
  if (rv) {
  -852,6 +862,7 
 
  while (!workers_may_exit) {
  ap_update_child_status_from_indexes(process_slot, thread_slot, 
SERVER_READY,
 NULL);
 +worker_thread_cnt++;
  rv = ap_queue_pop(worker_queue, csd, ptrans, last_ptrans);
  last_ptrans = NULL;
 

 Thanks for re-posting.  At first glance, what I like about this patch is
 that it creates a model in which the workers produce tokens and the
 listener
 consumes the tokens.  This removes some of the race conditions associated
 with the my patch in which the workers do both the increment and the
 decrement.

 However, there's a problem with this approach (aside from the whole issue of
 spinning around the (worker_thread_count != 0) check).  If the
 ap_queue_pop()
 function returns without actually acquiring a connection, you'll end up
 doubly incrementing the idle worker count (as the worker loop enters its
 next iteration).  This can happen if the cond_wait gets interrupted.  I
 believe Aaron has some test cases in which this has happened, and I saw
 what I think is this same phenomenon yesterday when debugging.

 --Brian

Yep this is a problem. I believe the pthread spec states that the cond_wait can be
spuriously triggered.

Bill





Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Aaron Bannert

On Wed, May 22, 2002 at 01:31:06PM -0400, Bill Stoddard wrote:
 Yep this is a problem. I believe the pthread spec states that the cond_wait can be
 spuriously triggered.

I'm pretty sure it does, which is why we always check for the condition
when we wake up and go right back to sleep if the condition hasn't been
met.

-aaron



Re: [PATCH] Implement -k option for httpd

2002-05-22 Thread Jeff Trawick

Here is another pass at it, starting with some of Justin's code but
trying to work out a more agreeable place for some of the function.
This puts the -k parsing in a rewrite_args hook (one for the Unix MPMs
is implemented in mpm_common.c) and puts the actual signalling code in
an optional function called from main() (again, one for the Unix MPMs
is implemented in mpm_common.c).

This patch concentrates on distributing the work to the right places.
It only implements -k stop, it is only enabled for the prefork MPM
(easy to enable for other MPMs), and I didn't sort out the httpd help
text (gross).

Hopefully this won't break anybody, and it can be quickly filled in
with the necessary details.

Any comments/concerns?  There must be at least ten improvements to
this that different people can think of :)

Index: include/http_log.h
===
RCS file: /home/cvs/httpd-2.0/include/http_log.h,v
retrieving revision 1.36
diff -u -r1.36 http_log.h
--- include/http_log.h  17 May 2002 10:48:06 -  1.36
+++ include/http_log.h  22 May 2002 17:36:39 -
@@ -240,6 +240,14 @@
  */
 AP_DECLARE(void) ap_log_pid(apr_pool_t *p, const char *fname);
 
+/**
+ * Retrieve the pid from a pidfile.
+ * @param p The pool to use for logging
+ * @param filename The name of the file containing the pid
+ * @param mypid Pointer to pid_t (valid only if return APR_SUCCESS)
+ */
+AP_DECLARE(apr_status_t) ap_read_pid(apr_pool_t *p, const char *filename, pid_t 
+*mypid);
+
 typedef struct piped_log piped_log;
 
 /**
Index: include/http_main.h
===
RCS file: /home/cvs/httpd-2.0/include/http_main.h,v
retrieving revision 1.23
diff -u -r1.23 http_main.h
--- include/http_main.h 17 Apr 2002 16:36:27 -  1.23
+++ include/http_main.h 22 May 2002 17:36:39 -
@@ -59,6 +59,8 @@
 #ifndef APACHE_HTTP_MAIN_H
 #define APACHE_HTTP_MAIN_H
 
+#include apr_optional.h
+
 /* AP_SERVER_BASEARGS is the command argument list parsed by http_main.c
  * in apr_getopt() format.  Use this for default'ing args that the MPM
  * can safely ignore and pass on from its rewrite_args() handler.
@@ -88,6 +90,8 @@
 /** An array of all -D defines on the command line.  This allows people to
  *  effect the server based on command line options */
 AP_DECLARE_DATA extern apr_array_header_t *ap_server_config_defines;
+
+APR_DECLARE_OPTIONAL_FN(int, ap_signal_server, (int *, apr_pool_t *));
 
 #ifdef __cplusplus
 }
Index: include/mpm_common.h
===
RCS file: /home/cvs/httpd-2.0/include/mpm_common.h,v
retrieving revision 1.36
diff -u -r1.36 mpm_common.h
--- include/mpm_common.h29 Mar 2002 16:21:48 -  1.36
+++ include/mpm_common.h22 May 2002 17:36:39 -
@@ -280,6 +280,11 @@
const char *arg);
 #endif
 
+#ifdef AP_MPM_WANT_SIGNAL_SERVER
+int ap_signal_server(int *, apr_pool_t *);
+void ap_mpm_rewrite_args(process_rec *);
+#endif
+
 #ifdef __cplusplus
 }
 #endif
Index: server/log.c
===
RCS file: /home/cvs/httpd-2.0/server/log.c,v
retrieving revision 1.120
diff -u -r1.120 log.c
--- server/log.c17 May 2002 11:11:37 -  1.120
+++ server/log.c22 May 2002 17:36:39 -
@@ -626,6 +626,55 @@
 saved_pid = mypid;
 }
 
+AP_DECLARE(apr_status_t) ap_read_pid(apr_pool_t *p, const char *filename,
+ pid_t *mypid)
+{
+const int BUFFER_SIZE = sizeof(long) * 3 + 2; /* see apr_ltoa */
+apr_file_t *pid_file = NULL;
+apr_status_t rv;
+const char *fname;
+char *buf, *endptr;
+apr_size_t bytes_wanted, bytes_read;
+
+if (!filename) {
+return APR_EGENERAL;
+}
+
+fname = ap_server_root_relative(p, filename);
+if (!fname) {
+ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_CRIT, APR_EBADPATH, 
+ NULL, Invalid PID file path %s, ignoring., filename);
+return APR_EGENERAL;
+}
+
+rv = apr_file_open(pid_file, fname, APR_READ, APR_OS_DEFAULT, p);
+if (rv != APR_SUCCESS) {
+return rv;
+}
+
+bytes_wanted = BUFFER_SIZE;
+endptr = buf = apr_palloc(p, BUFFER_SIZE);
+do {
+bytes_read = bytes_wanted;
+rv = apr_file_read(pid_file, endptr, bytes_read);
+if (rv != APR_SUCCESS  rv != APR_EOF) {
+return rv;
+}
+bytes_wanted -= bytes_read;
+endptr += bytes_read; 
+}
+while (bytes_wanted  0  rv != APR_EOF);
+
+*mypid = strtol(buf, endptr, 10);
+/* We only know for sure that the beginning part is the pid. */
+if (*buf == '\0' || *endptr != '\n') {
+return APR_EGENERAL;
+}
+
+apr_file_close(pid_file);
+return APR_SUCCESS;
+}
+
 AP_DECLARE(void) ap_log_assert(const char *szExp, const char *szFile,
int nLine)
 {

RE: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Ryan Bloom

 From: Aaron Bannert [mailto:[EMAIL PROTECTED]]
 
 On Wed, May 22, 2002 at 01:31:06PM -0400, Bill Stoddard wrote:
  Yep this is a problem. I believe the pthread spec states that the
 cond_wait can be
  spuriously triggered.
 
 I'm pretty sure it does, which is why we always check for the
condition
 when we wake up and go right back to sleep if the condition hasn't
been
 met.

I'll raise you and say without a doubt, pthread_cond can be triggered
spuriously.

Ryan





Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Jeff Trawick

Ryan Bloom [EMAIL PROTECTED] writes:

  From: Aaron Bannert [mailto:[EMAIL PROTECTED]]
  
  On Wed, May 22, 2002 at 01:31:06PM -0400, Bill Stoddard wrote:
   Yep this is a problem. I believe the pthread spec states that the
  cond_wait can be
   spuriously triggered.
  
  I'm pretty sure it does, which is why we always check for the
 condition
  when we wake up and go right back to sleep if the condition hasn't
 been
  met.
 
 I'll raise you and say without a doubt, pthread_cond can be triggered
 spuriously.

Yep, I too have seen it repeatedly.  Infuriating to have to code for
something like that.

-- 
Jeff Trawick | [EMAIL PROTECTED]
Born in Roswell... married an alien...



Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Aaron Bannert

On Wed, May 22, 2002 at 01:50:44PM -0400, Cliff Woolley wrote:
 Right.  pthread_yield seems to be a non-portable extension, if I'm reading
 right.  From /usr/include/pthread.h on Linux:
 
 #ifdef __USE_GNU
 /* Yield the processor to another thread or process.
This function is similar to the POSIX `sched_yield' function but
might be differently implemented in the case of a m-on-n thread
implementation.  */
 extern int pthread_yield (void) __THROW;
 #endif
 
 But likewise, yield() is not portable and neither is sched_yield().  This
 is why we need apr_thread_yield() to be implemented on Unix, as I
 mentioned the last time this came up.  But it's not.
 
 void apr_thread_yield()
 {
 }

The reason it's not implemented is because it's not guaranteed to do
anything. Yielding is up to the discresion of the underlying system,
and depending on many things it may behave differently. We can not
get predictable scheduling with any variant of yield() in a way that
will be portable. The only method we have right now for predictable
scheduling in APR is apr_thread_cond.h.

-aaron



Re: cvs commit: apache-1.3 STATUS

2002-05-22 Thread Cliff Woolley

On 22 May 2002 [EMAIL PROTECTED] wrote:

 jim 02/05/22 07:15:28

   Modified:.STATUS
   Log:
   Not a showstopper but something Martin has expressed an interest
   in seeing resolved in 1.3.25

   Revision  ChangesPath
   1.999 +6 -4  apache-1.3/STATUS

RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
   +
   +* [PATCH] 1.3: Stricter check on request_line format
   +  (Message-ID: [EMAIL PROTECTED])
   +  Status: Martin thinks this should be addressed

Wasn't this already committed a day or two ago?

--Cliff

--
   Cliff Woolley
   [EMAIL PROTECTED]
   Charlottesville, VA





Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Cliff Woolley

On Wed, 22 May 2002, Aaron Bannert wrote:

 The reason it's not implemented is because it's not guaranteed to do
 anything. Yielding is up to the discresion of the underlying system,
 and depending on many things it may behave differently. We can not
 get predictable scheduling with any variant of yield() in a way that
 will be portable. The only method we have right now for predictable
 scheduling in APR is apr_thread_cond.h.

I'd say it's up to us to guarantee that it *does* do something on a
cross-platform basis.  That's APR's job.  If we're not going to do that,
then it needs to go away.  Having a function in the API that doesn't do
what it's supposed to do uniformly across platforms is bad karma.  It
works on Win32, why shouldn't it work on Unix?

--Cliff

--
   Cliff Woolley
   [EMAIL PROTECTED]
   Charlottesville, VA





dist/httpd/

2002-05-22 Thread Joshua Slive

Anyone mind if I make the following changes:

- Make subdirectories for flood and apreq and move releases there.

- Rename httpd-2.0.36-win32.zip to httpd-2.0.36-source_only-win32.zip

There seems to be a ton of people downloading the win32.zip, and I imagine
the majority of them are just confusing themselves.

Joshua.




Re: dist/httpd/

2002-05-22 Thread Cliff Woolley

On Wed, 22 May 2002, Joshua Slive wrote:

 - Make subdirectories for flood and apreq and move releases there.

+1

 - Rename httpd-2.0.36-win32.zip to httpd-2.0.36-source_only-win32.zip

How about just -srconly- or -src- instead of -source_only- ?  That's an
awfully long filename.  But +1 either way.

--Cliff

--
   Cliff Woolley
   [EMAIL PROTECTED]
   Charlottesville, VA





Authentication requirement

2002-05-22 Thread Andrew Mann

httpd2.0.35
server/protocol.c

 Is there any reason why ap_get_basic_auth_pw() rejects 
authentication itself if the client provides no Auth line?  I can see a 
theoretical reason, but it seems to me that the practical reasons not to do 
this would outweigh that.  If I specify a module or set of modules to 
handle authentication, why is the base server getting involved in the 
decision at all?

Line 1081:
 if (!auth_line) {
 ap_note_basic_auth_failure(r);
 return HTTP_UNAUTHORIZED;
 }

 I use a hack currently that changes the above rejection to fill in 
auth fields with 0 length strings and presume Basic type.  It's probably 
not the right way to do things, but it seems to have the least chance of 
breaking any existing modules (unless someone actually uses a blank 
login/password).
 I'm using a module that controls access to directories and 
files.  It doesn't always require a login/password, but for some 
files/directories it does.  It uses a database to determine what kind of 
credentials are needed to access any given resource.  Naturally there's a 
problem if the resource shouldn't require a login/password, but the module 
isn't even being prompted for that, instead the Apache server is rejecting 
it immediately.
 Am I missing some straightforward way to avoid this without 
altering the code?  Is there any reason why an auth module can't be passed 
every request in it's domain regardless of how seemingly obvious it is 
that the request will fail?



Andrew Mann




RE: dist/httpd/

2002-05-22 Thread Sander Striker

 From: Cliff Woolley [mailto:[EMAIL PROTECTED]]
 Sent: 22 May 2002 20:06

 On Wed, 22 May 2002, Joshua Slive wrote:
 
  - Make subdirectories for flood and apreq and move releases there.
 
 +1
 
  - Rename httpd-2.0.36-win32.zip to httpd-2.0.36-source_only-win32.zip
 
 How about just -srconly- or -src- instead of -source_only- ?  That's an
 awfully long filename.  But +1 either way.

+1, specifically for 'src'.
And maybe add a descriptive AddDescription entry for it to the .htaccess
file.

Sander




Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Cliff Woolley

On Wed, 22 May 2002, Aaron Bannert wrote:

 CPU since it hits none of the yieldable system calls. On systems that do
 true context switching between userspace threads, this doesn't need to
 be implemented. It in no way guarantees that the execution will be
 yielded, since that's up to the scheduling mechanism.

If it isn't guaranteed to do something but is rather just a hint, that's
fine, as long as it's documented.  But we should still make an attempt to
honor the hint if the underlying system will let us.

[For example, I know my research work frequently requires these hints
because ~10ms is far too long a timeslice in my field, and I love
using APR for my research projects... I personally just assumed
apr_thread_yield() did what I wanted until I looked into it and found that
it did nothing.]

--Cliff

--
   Cliff Woolley
   [EMAIL PROTECTED]
   Charlottesville, VA





Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Aaron Bannert

On Wed, May 22, 2002 at 02:14:30PM -0400, Cliff Woolley wrote:
 If it isn't guaranteed to do something but is rather just a hint, that's
 fine, as long as it's documented.  But we should still make an attempt to
 honor the hint if the underlying system will let us.
 
 [For example, I know my research work frequently requires these hints
 because ~10ms is far too long a timeslice in my field, and I love
 using APR for my research projects... I personally just assumed
 apr_thread_yield() did what I wanted until I looked into it and found that
 it did nothing.]

[moving this discussion to APR]

FWIW, here's the top of the thread that introduced this API:

http:[EMAIL PROTECTED]%3e

You bring up a good point, so my only question is whether we know how
to implement this on all the unix thread libraries out there.

-aaron



Re: cvs commit: apache-1.3 STATUS

2002-05-22 Thread Jim Jagielski

Yes it was! This should have been committed awhile ago (I
thought it had!) :/

At 1:56 PM -0400 5/22/02, Cliff Woolley wrote:
On 22 May 2002 [EMAIL PROTECTED] wrote:

 jim 02/05/22 07:15:28

   Modified:.STATUS
   Log:
   Not a showstopper but something Martin has expressed an interest
   in seeing resolved in 1.3.25

   Revision  ChangesPath
   1.999 +6 -4  apache-1.3/STATUS

RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
   +
   +* [PATCH] 1.3: Stricter check on request_line format
   +  (Message-ID: [EMAIL PROTECTED])
   +  Status: Martin thinks this should be addressed

Wasn't this already committed a day or two ago?

--Cliff

--
   Cliff Woolley
   [EMAIL PROTECTED]
   Charlottesville, VA


-- 
===
   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: libexpat

2002-05-22 Thread Greg Ames

Doug MacEachern wrote:

 httpd links in expat, perl extension links against a different version of
 expat.  both have the same symbol names, and they are not binary
 compatible.  perl extension resolves symbols to the httpd version.
 kaboom.  its been an issue for years with 1.3, you'll find plenty in the
 modperl archives on it.

Speaking of 1.3 expat, I built a 1.3.24 Linux binary on my Mandrake 8.0 laptop
the other day with binbuild.sh.  I was surpised when one of the IBM testers told
me he couldn't bring it up on his SuSE box, because it couldn't find
libexpat.so.0 or some such.

It turns out that my ThinkPad has native expat support installed; the SuSE box
doesn't.  The Configure script prefers the system's expat to our bundled
version.  Makes sense, except for binbuilds where supporting the lowest common
denominator is a winner.  I hacked Configure to bundle our expat and the SuSE
tester was happy.

When I mentioned this to other Apachers around here, I got differing opinions on
what the Right Thing is for a binbuild.  One thought was to disable expat
altogether in 1.3 binbuilds since they don't include mod_dav.  Another thought
was to always bundle expat so that external modules can use it.  

I wouldn't mind spending a little time to resolve this if we had a consensus on
what it should do.  Doug and Will's comments make disabling expat in 1.3
binbuilds sound better.

Greg



Re: libexpat

2002-05-22 Thread Greg Ames

Doug MacEachern wrote:
 
 On Tue, 21 May 2002, Greg Stein wrote:
 
  Euh... we switched over to a shared library to specifically fix this
  problem. Are you saying that that didn't work? I'm not buying it... :-)
 
 sooo, i guess the answer to my question on how to disable expat is
 you can't ?

Which release of httpd?  1.3 has a Configure rule to turn off expat.  

Greg



Re: [PATCH 2] worker MPM deadlock

2002-05-22 Thread Bill Stoddard



 On Wed, May 22, 2002 at 01:59:02PM -0400, Cliff Woolley wrote:
  On Wed, 22 May 2002, Aaron Bannert wrote:
 
   The reason it's not implemented is because it's not guaranteed to do
   anything. Yielding is up to the discresion of the underlying system,
   and depending on many things it may behave differently. We can not
   get predictable scheduling with any variant of yield() in a way that
   will be portable. The only method we have right now for predictable
   scheduling in APR is apr_thread_cond.h.
 
  I'd say it's up to us to guarantee that it *does* do something on a
  cross-platform basis.  That's APR's job.  If we're not going to do that,
  then it needs to go away.  Having a function in the API that doesn't do
  what it's supposed to do uniformly across platforms is bad karma.  It
  works on Win32, why shouldn't it work on Unix?

 IIRC, this function exists so that netware and other
 single-multiplexed-process based thread libraries can have finer-grain
 control over execution sharing. The use case is a large computationally
 expensive function that hogs the CPU for a long time and can't yield the
 CPU since it hits none of the yieldable system calls. On systems that do
 true context switching between userspace threads, this doesn't need to be
 implemented. It in no way guarantees that the execution will be yielded,
 since that's up to the scheduling mechanism.

 -aaron


Aaron,
That is very disturbing but makes a lot of sense. Now I wonder if Sleep(0) on
WinNT -really- behaves as documented...

Bill




Re: dist/httpd/

2002-05-22 Thread William A. Rowe, Jr.

At 01:00 PM 5/22/2002, Joshua Slive wrote:
Anyone mind if I make the following changes:

- Make subdirectories for flood and apreq and move releases there.

Sounds Cool.

- Rename httpd-2.0.36-win32.zip to httpd-2.0.36-source_only-win32.zip

Allow me to make some changes first.

There seems to be a ton of people downloading the win32.zip, and I imagine
the majority of them are just confusing themselves.

I've seen far fewer complaints since .36 when I rewrote the first few sentences
about what the downloads are.

Download precompiled binaries/ for your platform, or download the source:

where precompiled binaries/ is an href to binaries/ ... can still be 
better worded.




Re: libexpat

2002-05-22 Thread Doug MacEachern

On Wed, 22 May 2002, Greg Ames wrote:
 
 Which release of httpd?  1.3 has a Configure rule to turn off expat.  

right.  i'm asking about 2.0 (my original message specified)




Re: dist/httpd/

2002-05-22 Thread Joshua Slive

On Wed, 22 May 2002, William A. Rowe, Jr. wrote:
 There seems to be a ton of people downloading the win32.zip, and I imagine
 the majority of them are just confusing themselves.

 I've seen far fewer complaints since .36 when I rewrote the first few sentences
 about what the downloads are.

 Download precompiled binaries/ for your platform, or download the source:

 where precompiled binaries/ is an href to binaries/ ... can still be
 better worded.

I believe you, but I just did a quick scan of
http://www.apache.org/server-status
and I saw more people downloading win32.zip than the win32 binary.  I'm
just guessing that most of these people are lost.

Joshua.




Re: cvs commit: httpd-dist HEADER.html

2002-05-22 Thread Joshua Slive


On 22 May 2002 [EMAIL PROTECTED] wrote:

 wrowe   02/05/22 13:13:08

   Modified:.HEADER.html
   Log:
 Attempt to cool off download hell.  Simplify the HEADER to just what
 we MUST state up front, so folks will take the time to read it.

Not to discourage you, but I should note that many of our mirrors do not
display HEADER and README.  And, since we IndexIgnore those files, they
are totally invisible on some mirrors.  That is one reason for making sure
the filenames themselves are clear.

Joshua.




win32 changes from 1.3

2002-05-22 Thread Allan Edwards

In 1.3 we did not need to specify a drive letter
for ServerRoot and DocumentRoot paths but in 2.0
it appears we must specify the drive letter or Apache
will not start as a service. (note: the 2.0.36 .msi 
install sets the drive letter so this limitation is 
not immediately apparent to those users).

Also, in 1.3 the -k stop/restart directives worked
even if you started Apache from the command line.
Now it appears that -k is only effective when 
running as a service.

Were these changes intentional or did they slip
in inadvertently?

Allan



Re: cvs commit: httpd-dist HEADER.html

2002-05-22 Thread William A. Rowe, Jr.

At 03:28 PM 5/22/2002, Joshua wrote:

On 22 May 2002 [EMAIL PROTECTED] wrote:

  wrowe   02/05/22 13:13:08
 
Modified:.HEADER.html
Log:
  Attempt to cool off download hell.  Simplify the HEADER to just what
  we MUST state up front, so folks will take the time to read it.

Not to discourage you, but I should note that many of our mirrors do not
display HEADER and README.  And, since we IndexIgnore those files, they
are totally invisible on some mirrors.  That is one reason for making sure
the filenames themselves are clear.

Agreed... and all the more reason that README should spell out all of the
notes the user should READ before downloading :-)  HEADER is now a
fairly flat entry.  Perhaps we should duplicate the first h2/p section into
README for that very reason [HTTP Server Source Code Distribution]?

And agreed ... are there any objections to renaming all of the tarball files
in that directory as -src ?  It sure seems like a good decision, I know I
get confused after throwing a dozen downloads into the same project
directory on my machine.  -src is goodness in my book (across the
board, unix and win32 included.)  So for win32 we end up with the
somewhat wordy but extremely clear -win32-build-src.zip

Bill







Re: dist/httpd/

2002-05-22 Thread Greg Stein

On Wed, May 22, 2002 at 02:22:03PM -0500, William A. Rowe, Jr. wrote:
...
 - Rename httpd-2.0.36-win32.zip to httpd-2.0.36-source_only-win32.zip
 
 Allow me to make some changes first.

Um. How is httpd-2.0.36-win32.zip different from the .tar.gz ? In other
words, if we're talking about source distributions, then why isn't it simply
httpd-2.0.36.zip ?

Cheers,
-g

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



Re: dist/httpd/

2002-05-22 Thread Cliff Woolley

On Wed, 22 May 2002, Greg Stein wrote:

 Um. How is httpd-2.0.36-win32.zip different from the .tar.gz ? In other
 words, if we're talking about source distributions, then why isn't it simply
 httpd-2.0.36.zip ?

DOS-friendly CRLF line endings in the source files.




RE: win32 changes from 1.3

2002-05-22 Thread Allan Edwards

 If your cwd is on another
 volume, that's a problem.  This hurts services, since the cwd will
 always be c:\winnt\system32\.

Yep, was installed on a non-C: drive
 
 I suggest we cwd to the server root on startup.  We can do this
 in the winnt_mpm, or for all platforms in main().  Opinions?

+1  - at least for Windows

 -k preferring a service was a deliberate change.

That was my guess, but I had to ask :)

Allan



Re: dist/httpd/

2002-05-22 Thread William A. Rowe, Jr.

At 04:52 PM 5/22/2002, you wrote:
On Wed, May 22, 2002 at 02:22:03PM -0500, William A. Rowe, Jr. wrote:
 ...
  - Rename httpd-2.0.36-win32.zip to httpd-2.0.36-source_only-win32.zip
 
  Allow me to make some changes first.

Um. How is httpd-2.0.36-win32.zip different from the .tar.gz ? In other
words, if we're talking about source distributions, then why isn't it simply
httpd-2.0.36.zip ?

It contains the Win32 .mak files and awk-generated .rc files, and is in 
text cr/lf
format.  Ergo I've renamed it more properly -win32-build.  In fact, 
ignoring the
.mak/.rc issues, and transposing lf endings for crlf text files, it can be 
built on Unix.

Netware, who has all these packed up build files to untangle, might also 
benefit
from a -netware-build.zip version.  The point being, these are alternative 
builds
(such as, perhaps, a -darwin-build.tar.gz version.)

And Josh and I are suggesting we add -src to the end of every package name
in the source distro directory.

Bill







Re: dist/httpd/

2002-05-22 Thread Aaron Bannert

 And Josh and I are suggesting we add -src to the end of every package name
 in the source distro directory.

+1

-aaron



[STATUS] (apache-1.3) Wed May 22 23:45:06 EDT 2002

2002-05-22 Thread Rodent of Unusual Size

APACHE 1.3 STATUS:  -*-text-*-
  Last modified at [$Date: 2002/05/22 18:06:38 $]

Release:

   1.3.25-dev: In development
 A release is proposed for end of May 2002. Jim
 volunteers to be RM.
   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  : In alpha development, see httpd-2.0 repository

RELEASE SHOWSTOPPERS:

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

* 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):

   * Backport of 2.0 ForceLanguagePriority directive
   /dist/httpd/contrib/patches/1.3/force_language_priority.patch
   Message-ID: [EMAIL PROTECTED]
   Status:

   *  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 to remove dependency of mod_auth_dbm on mod_auth.
  (PR#2598)
Message-ID: [EMAIL PROTECTED]
Status: Lars +1 (on concept), Ken 

[STATUS] (httpd-2.0) Wed May 22 23:45:10 EDT 2002

2002-05-22 Thread Rodent of Unusual Size

APACHE 2.0 STATUS:  -*-text-*-
Last modified at [$Date: 2002/05/22 05:56:43 $]

Release:

2.0.37  : in development.
2.0.36  : released May 6, 2002 as GA.
2.0.35  : released April 5, 2002 as GA.
2.0.34  : tagged March 26, 2002.
2.0.33  : tagged March 6, 2002.  not released.
2.0.32  : released Feburary 16, 2002 as beta.
2.0.31  : rolled Feburary 1, 2002.  not released.
2.0.30  : tagged January 8, 2002.  not rolled.
2.0.29  : tagged November 27, 2001.  not rolled.
2.0.28  : released November 13, 2001 as beta.
2.0.27  : rolled November 6, 2001
2.0.26  : tagged October 16, 2001.  not rolled.
2.0.25  : rolled August 29, 2001
2.0.24  : rolled August 18, 2001
2.0.23  : rolled August 9, 2001
2.0.22  : rolled July 29, 2001
2.0.21  : rolled July 20, 2001
2.0.20  : rolled July 8, 2001
2.0.19  : rolled June 27, 2001
2.0.18  : rolled May 18, 2001
2.0.17  : rolled April 17, 2001
2.0.16  : rolled April 4, 2001
2.0.15  : rolled March 21, 2001
2.0.14  : rolled March 7, 2001
2.0a9   : released December 12, 2000
2.0a8   : released November 20, 2000
2.0a7   : released October 8, 2000
2.0a6   : released August 18, 2000
2.0a5   : released August 4, 2000
2.0a4   : released June 7, 2000
2.0a3   : released April 28, 2000
2.0a2   : released March 31, 2000
2.0a1   : released March 10, 2000

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

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


CURRENT RELEASE NOTES:

* 36 status: released on Monday, May 6, 2002.
 Awaiting the .zip files to complete the release.

RELEASE SHOWSTOPPERS:

* Worker MPM deadlocks

* for 2.0.37: decide if the MMN bump was warranted

* there is an outstanding veto on an apr_brigade_puts() optimization

CURRENT VOTES:

* Should we always build [support*] binaries statically unless otherwise
  indicated?
Message-ID: [EMAIL PROTECTED]

  +1:  Ken, *wrowe [they are PITAs on OSX]
  -1:  Justin, Ian

* 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
  Have 2 parents: +1: Jim
  -1: Justin, wrowe [for 2.0]
  +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
  +0:   BrianP, Aaron (mutex contention is looking better with the
latest code, let's continue tuning and testing)
  -0:   Lars

* Change the default config so that we add a ServerToken Minimal
  to the config. Possibly go one step further and add a option
  to just report '2.0' instead of '2.0.x'
  +1:   IanH, BrianP
  -1: Greg, Cliff, Justin
 I use the default response all the time to verify that a
 module is present and at the proper version. This information
 is also very handy for the module surveys, to determine what
 modules are out there and in prevalent use (see
 securityspace.com; frickin' JServ is still increasing in
 numbers!). Security conscious people can change this on their
 own, when required. Removing the information doesn't remove
 any future vulnerabilities. Assuming that a vulnerability
 occurred, I highly doubt that somebody would actually bother
 to *test* the version reported in the response before
 attempting to use the vulnerability, so trying to hide the
 information isn't all that useful.

RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
* Get mod_cache/mod_mem_cache out of experimental (still some
  work items left to complete)

* The 2.0.36 worker MPM graceless shutdown changes work but are
  a bit clunky on some platforms; eg, on Linux, the loop to
  join each worker thread seems to hang, and the parent ends up
  killing off the child with SIGKILL.  But at least it shuts down.

* --enable-mods-shared=foo1 foo2 is busted on Darwin.  Pier
posted a patch (Message-ID: [EMAIL PROTECTED]).

* We do not properly substitute the prefix-variables in the configuration
  scripts or generated-configs.  (i.e. if sysconfdir is etc,
  httpd-std.conf points to conf.)

* If any request gets through ap_process_request_internal() and is
  scheduled to be served by the core handler, without a flag that this 
  r-filename was tested by dir/file_walk, we need to 500 at 

RE: win32 changes from 1.3

2002-05-22 Thread William A. Rowe, Jr.

At 06:37 PM 5/22/2002, you wrote:
  If your cwd is on another
  volume, that's a problem.  This hurts services, since the cwd will
  always be c:\winnt\system32\.

Yep, was installed on a non-C: drive

  I suggest we cwd to the server root on startup.  We can do this
  in the winnt_mpm, or for all platforms in main().  Opinions?

+1  - at least for Windows

And +1 for the rest, or was that simply +0 to do so in main()?