Re: What is test.o?

2001-09-13 Thread Gary Benson

On Wed, 12 Sep 2001, Doug MacEachern wrote:

 On Wed, 12 Sep 2001, Gary Benson wrote:

  The makefile itself makes the directory, and puts a .exists file in it,
  but I don't know what it is trying to to do it or why. I've attached my
  makefile if you want to compare, or if you send me yours then I'll compare
  it instead...

 looks like there's a mod_random_chunk.c in your perl-framework/ directory?

Yes, it's the one I made the other day. I moved it out of its own
directory so it didn't get nailed when I ran cvs update.

Well, I moved it and it works properly now. I hope that you didn't spend
too much time on it :-/

Cheers,
Gary

[ Gary Benson, Red Hat Europe ][ [EMAIL PROTECTED] ][ GnuPG 85A8F78B ]



Re: Error from mod_cgi test

2001-09-13 Thread Gary Benson

On Thu, 13 Sep 2001, john sachs wrote:

 On Thu, Sep 13, 2001 at 09:16:38AM -0700, Ian Holsman wrote:
 + error: cgi log not created!
 + not ok 2
 + # Failed test 2 in modules/cgi.t at line 85

 + error: cgi log does not exist!
 + not ok 4
 + # Failed test 4 in modules/cgi.t at line 97

 + dubious
 + Test returned status 2 (wstat 512, 0x200)
 + DIED. FAILED tests 2, 4, 10-36
 + Failed 29/36 tests, 19.44% okay

 ok, all these errors deal with the cgi log. at first i thought the
 script was using relative paths to find the log, but thats not the
 case.  so the only thing i can think of is permissions? the test is
 dying because its trying to do a stat on a non-existant file.  i will
 fix this, but it still doesnt tell us why the log file is not getting
 created. any ideas anyone?

What user is the cronjob running as? It may be that the cronjob is running
as a different user...

Gary

[ Gary Benson, Red Hat Europe ][ [EMAIL PROTECTED] ][ GnuPG 85A8F78B ]



Re: Error from mod_cgi test

2001-09-13 Thread Ian Holsman
Gary Benson wrote:
On Thu, 13 Sep 2001, john sachs wrote:

On Thu, Sep 13, 2001 at 09:16:38AM -0700, Ian Holsman wrote:
+ error: cgi log not created!
+ not ok 2
+ # Failed test 2 in modules/cgi.t at line 85
+ error: cgi log does not exist!
+ not ok 4
+ # Failed test 4 in modules/cgi.t at line 97
+ dubious
+   Test returned status 2 (wstat 512, 0x200)
+ DIED. FAILED tests 2, 4, 10-36
+   Failed 29/36 tests, 19.44% okay
ok, all these errors deal with the cgi log. at first i thought the
script was using relative paths to find the log, but thats not the
case.  so the only thing i can think of is permissions? the test is
dying because its trying to do a stat on a non-existant file.  i will
fix this, but it still doesnt tell us why the log file is not getting
created. any ideas anyone?
What user is the cronjob running as? It may be that the cronjob is running
as a different user...
the cronjob first pulls the CVS Head from httpd-2, apr, apr-util, proxy 
 test.
it then builds  installs HTTP.
it then builds/runs the test program.

I've attached the script here.
..Ian

Gary
[ Gary Benson, Red Hat Europe ][ [EMAIL PROTECTED] ][ GnuPG 85A8F78B ]


#!/bin/sh
#
# nightly2 - build httpd-2.0 complete and log everything
#
# uses pwd for everything
# mails errorlog iff errors occur
# can be extended to read script fragments to add modules for
#   rollup builds
#

# canonical date for naming things
date=`date +%C%y%m%d%H%M%S`
# OS for logging
opsys=`uname -sr`
# where were we now? everything builds here
origdir=/usr/local/src/nightly
# CVS checkout dir
indir=$origdir/src
# build dir
outdir=httpd-2.0-nightly
# test dir
testdir=httpd-2.0-test
# install dir
installdir=/usr/local/src/nightly/httpd-2.0-install
# logs go here
destdir=/usr/local/src/nightly/logs
# error log
errfile=$origdir/$date.errlog
# output log
outfile=$origdir/$date.outlog
# testerr log
testerrfile=$origdir/$date.test_errlog
# testout log
testoutfile=$origdir/$date.test_outlog
# last symlink
last_testoutfile=$origdir/last.test_outlog
# serverout log
serveroutfile=$origdir/$date.server_outlog
# base packages
basepkgs=httpd-2.0
# additional packages to check out and merge
addpkgs=apr apr_util httpd_proxy httpd_test
addpkgs_name=apr apr-util httpd-proxy httpd-test
# packages to check out
pkgs=$basepkgs $addpkgs_name
# where to get them
psvr=:pserver:[EMAIL PROTECTED]:/home/cvspublic
# server config
cfgopts=--enable-so --enable-shared --enable-maintainer-mode 
--enable-auth-anon --enable-auth-dbm --enable-auth-db --enable-auth-digest 
--enable-file-cache --enable-echo --enable-cache --enable-mime-magic 
--enable-cern-meta --enable-expires --enable-headers --enable-usertrack 
--enable-unique-id --enable-proxy --enable-proxy-connect --enable-proxy-ftp 
--enable-proxy-http --enable-dav --enable-info --enable-suexec --enable-cgi 
--enable-cgid --enable-dav-fs --enable-vhost-alias --enable-rewrite 
--enable-case-filter --enable-case-filter-in -prefix=$installdir 
#--with-tls=/usr --with-ssl=/usr --enable-ssl --enable-tls 
# what we don't turn on
nocfgopts=--enable-charset-lite --enable-disk-cache --with-tls=/usr 
--with-ssl=/usr --enable-ssl --enable-tls 
# who to bother (CHANGE FOR TESTING)
#mailto=[EMAIL PROTECTED]
mailto=[EMAIL PROTECTED]
#mail to send test messages to
testmailto=[EMAIL PROTECTED]
# link to logs
thelink=http://cvs.apache.org/builds/httpd-proxy/logs/;
# number of lines of fixed output
fixlines=10
# number of additional (merged) modules
addlines=`echo $addpkgs | wc -w`
# number of lines in errorless output
msglines=`expr $fixlines + $addlines`
# vars for building releases later
tarname=$outdir_$date
compressext=.tar.Z
gzipext=.tar.gz
zipext=.zip

emitmsg () {
#local msg; local errfile; local outfile

#echo $msg; 
echo $msg  $errfile; 
echo $msg  $outfile

return $?
}

build2main () {
#local indir; local outdir

cp -R $indir/httpd-2.0 .
mv httpd-2.0 $outdir

return $?
}

build_apr () {
#local indir; local outdir; local repdir

cp -R $indir/$repdir $outdir/srclib/

return $?
}

build_apr_util () {
cp -R $indir/apr-util $outdir/srclib/
return $?
}

build_httpd_proxy () {

mkdir $outdir/modules/proxy
cp -R $indir/httpd-proxy/module-2.0/* $outdir/modules/proxy
cp -R $indir/httpd-proxy/module-2.0/.[a-z]* $outdir/modules/proxy
cp $indir/httpd-proxy/docs/mod_proxy.html $outdir/docs/manual/mod

return $?
}
build_httpd_test() {
mkdir $testdir
cp -R $indir/httpd-test/perl-framework/* $testdir
return $?
}


datenow=`date`
msg=Build started $datenow on $opsys; emitmsg

msg=Checking out $pkgs; emitmsg
mkdir $indir
cd $indir
cvs -q -d $psvr co $pkgs 2 $errfile  $outfile
cd $origdir

msg=Building $outdir; emitmsg
build2main 2 $errfile  $outfile

# this loop should eventually execute a script fragment in each additional
# module's repository merging it into the big build automagically
for repdir in $addpkgs; do
msg=Merging package $repdir; emitmsg
build_$repdir 2 

Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Greg Stein

On Wed, Sep 12, 2001 at 10:34:03PM -0400, Rodent of Unusual Size wrote:
 * On 2001-09-12 at 21:11,
   Ryan Bloom [EMAIL PROTECTED] excited the electrons to say:
  
  This is why we have config.layout.
 
 It is not just -f, it is -d as well.  I think most installations use
 either one of these or the default location set by the layout.
 Not a problem, I think.

If the hard-coded default is never used, then why don't we just toss it, and
require people to pass/use a root?

Cheers,
-g

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



Re: so modules, libtool and position independent code

2001-09-13 Thread new-httpd

On Wed, Sep 12, 2001 at 05:27:07PM +0200, Sascha Schumann wrote:
  First - I don't understand why it works, since libpython is not PIC (-fpic
  is not used when compiling). From reading what I could find on the
  subject, it's supposed to crash miserably.
 
 You can use non-PIC code in shared libraries with the
 disadvantage that pages cannot be shared between unrelated
 processes, because each process needs to maintain its own
 relocated copy (they should be shared between parent/children
 though).

Depends on the platform. You cannot link non-PIC code with PIC code on
HP-UX.

  Second - is libtool's refusal to link with non-libtool libraries an issue
  for other module writers, and what is the recommended way to go around it?
  The only solution I could think of was not using apxs.
 
 Libtool is capable of linking shared libraries against static
 code since version 1.3d.  Prior to that, there were patches
 available to add this feature to libtool.

I think it issues a warning and does so only on platforms that allow
it.

-- 
albert chin ([EMAIL PROTECTED])



RE: Optimizing dir_merge() AND RE: [BUG] mod_ssl broken

2001-09-13 Thread Sander Striker

Hi,

I can reproduce the problem easily now with
openssl s_client.  If anyone is interested
to hunt this bug down (I am personally not
familiar enough with the location_walk code
to find it (without spending more time on
it than I have at the moment)), I can give
an account on my box to observe the problem
first hand.

Once again, it is not in the optimization code,
I reverted to request.c 1.47 (with patch 1.49
applied).

If someone has time, please help hunt this down
so I can focus on working on the ssl side of
subversion ;)

Sander




Re: so modules, libtool and position independent code

2001-09-13 Thread Sascha Schumann

 Depends on the platform. You cannot link non-PIC code with PIC code on
 HP-UX.

Yes, I was speaking in the context of FreeBSD where the
person I was replying to had specific problems.

- Sascha Experience IRCG
  http://schumann.cx/http://schumann.cx/ircg




Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Brad Nicholes

   Thank you for the feedback but I am still concerned about how this is going to work 
on NetWare.  Here are the reasons why:

1) NetWare like Win32 and OS2, does not have a configure utility therefore 
config.layout will do us no good at all.  In fact 99% of the compile time 
configuration is meaningless to us mostly due to the next reason.

2) Unlike the Unix world, and I wish this were not the case for us, NetWare does not 
have an open development environment.  Our tools such as Code Warrior cost money and 
are not widely available.  Due to this fact we can not expect the average user to 
download, build and install Apache from source.  Our users depend on prebuilt binaries 
that will work in all NetWare configurations.  To my knowledge, and I hope I am wrong, 
there are only a hand full of developers that have actually downloaded the source and 
built it for NetWare in comparison to a relatively large number of NetWare users that 
have downloaded the binaries and are either playing with it or deploying it.  BTW, 
Apache 1.3.20 will be shipping with NetWare 6 so this relatively large number will 
grow even larger soon.

3) Bill suggested that we look at the Win32 hooks.  I'm not quite sure what you mean 
by that.  Unless they are some type of Apache hook, it won't do us any good either.  
NetWare does not have a hooking mechanism that will allow us to alter something like 
HTTP_ROOT at run-time.  When the Apache binary is envoked, the first thing we hit is 
main().  According to the code, def_server_root is initialized to HTTPD_ROOT and 
unless there is a -f or -d parameter specified, a hard coded path will be used and we 
will fail.

The only possible workaround that I can see at the moment is #define'ing HTTP_ROOT as 
getcwd() which will at least get us in the ball park.  I would greatly appreciate any 
other suggestions from those who know this code much better than I do (which could be 
just about anybody :)  )

thanks,
Brad

 [EMAIL PROTECTED] Thursday, September 13, 2001 12:49:55 AM 
On Wed, 12 Sep 2001, Greg Stein wrote:

 On Wed, Sep 12, 2001 at 10:34:03PM -0400, Rodent of Unusual Size wrote:
  * On 2001-09-12 at 21:11,
Ryan Bloom [EMAIL PROTECTED] excited the electrons to say:
   
   This is why we have config.layout.
  
  It is not just -f, it is -d as well.  I think most installations use
  either one of these or the default location set by the layout.
  Not a problem, I think.
 
 If the hard-coded default is never used, then why don't we just toss it, and
 require people to pass/use a root?

It is used.  By default.  A default configure --prefix=/under/my/hat
 make  make install will result in the default defines being used.

We need some way to know where to look for config files.  This can
be done at compile time or at run time.

Right now we support it being done at compile time with these defines.
Lots of people do use it.  Note that it is designed so that it 
can be easily overridden from the #defined path at compile time, and
it often is.

It can be overridden at run time with command line options.  The
original suggestion that started this thread was to base it off
the current working directory.  I just don't see that offering any 
real advantage, since command line options are directly associated 
with the execution of the program, as opposed to the working directory
which is a OS maintained bit of information.





Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Marc Slemko

On Thu, 13 Sep 2001, Brad Nicholes wrote:

Thank you for the feedback but I am still concerned about how
 this is going to work on NetWare.  Here are the reasons why:

 
 1) NetWare like Win32 and OS2, does not have a configure utility
 therefore config.layout will do us no good at all.  In fact 99% of
 the compile time configuration is meaningless to us mostly due to
 the next reason.

Then put it in httpd.h, where it already is:

#elif defined(NETWARE)
#define HTTPD_ROOT sys:/apache
#else

Then if it is installed in the default location, no flags are necessary.


 3) Bill suggested that we look at the Win32 hooks.  I'm not quite
sure what you mean by that.  Unless they are some type of Apache
hook, it won't do us any good either.  NetWare does not have a
hooking mechanism that will allow us to alter something like
HTTP_ROOT at run-time.  When the Apache binary is envoked, the
first thing we hit is main().  According to the code, def_server_root
is initialized to HTTPD_ROOT and unless there is a -f or -d parameter
specified, a hard coded path will be used and we will fail.

Why will you fail if it is installed in the hardcoded location?

If not, then...

Why can't users use command line parameters?  Netware supports them,
right?

Netware supports some type of scripting language doesn't it?  Why can't
you have a control script (much like apachectl) that passes the appropriate
command line options?

I don't see why using command line options is so undesirable or why 
relying on a particular working directory when starting the server is
better.  And I don't see any differences between Unix binary builds and
netware; although a much higher percent of people can be expected to
compile from source on unix, there are still a whole lot of binary builds
used, and the current mechanisms work for them.  What am I missing?




Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Brad Nicholes

   You are right, we can use command line parameters and everything will work 
correctly.  The only concern I have is that with Apache 1.3.x we can install it, make 
some minor changes to the HTTPD.conf and invoker APACHE at the console.  Which means 
that the default configuration will work.  With Apache 2.0 we will now be saying that 
the default configuration will no longer work.  You must use the command line or you 
must install to sys:\apache or it will fail.  Basically what I am saying is that we 
don't have that restriction now.  Why should we introduce this restriction for Apache 
2.0?

Brad

 Marc Slemko [EMAIL PROTECTED] Thursday, September 13, 2001 9:23:24 AM 
On Thu, 13 Sep 2001, Brad Nicholes wrote:

Thank you for the feedback but I am still concerned about how
 this is going to work on NetWare.  Here are the reasons why:

 
 1) NetWare like Win32 and OS2, does not have a configure utility
 therefore config.layout will do us no good at all.  In fact 99% of
 the compile time configuration is meaningless to us mostly due to
 the next reason.

Then put it in httpd.h, where it already is:

#elif defined(NETWARE)
#define HTTPD_ROOT sys:/apache
#else

Then if it is installed in the default location, no flags are necessary.


 3) Bill suggested that we look at the Win32 hooks.  I'm not quite
sure what you mean by that.  Unless they are some type of Apache
hook, it won't do us any good either.  NetWare does not have a
hooking mechanism that will allow us to alter something like
HTTP_ROOT at run-time.  When the Apache binary is envoked, the
first thing we hit is main().  According to the code, def_server_root
is initialized to HTTPD_ROOT and unless there is a -f or -d parameter
specified, a hard coded path will be used and we will fail.

Why will you fail if it is installed in the hardcoded location?

If not, then...

Why can't users use command line parameters?  Netware supports them,
right?

Netware supports some type of scripting language doesn't it?  Why can't
you have a control script (much like apachectl) that passes the appropriate
command line options?

I don't see why using command line options is so undesirable or why 
relying on a particular working directory when starting the server is
better.  And I don't see any differences between Unix binary builds and
netware; although a much higher percent of people can be expected to
compile from source on unix, there are still a whole lot of binary builds
used, and the current mechanisms work for them.  What am I missing?





Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Ryan Bloom


Brad, you gave the solution to your problem in this e-mail.  Since you
basically have control over the build environment, just define a CFLAG
at build time that assigns HTTPD_ROOT to whatever makes sense as 
a default on Netware.

As for what to do when Apache is installed to a non-standard path, just
create a small scripte (modeled after apachectl), which starts Apache with
the -d flag.  This is what Covalent does, since we have to deliver a 
pre-built Apache binary.

Ryan

On Thursday 13 September 2001 08:08 am, Brad Nicholes wrote:
Thank you for the feedback but I am still concerned about how this is
 going to work on NetWare.  Here are the reasons why:

 1) NetWare like Win32 and OS2, does not have a configure utility therefore
 config.layout will do us no good at all.  In fact 99% of the compile time
 configuration is meaningless to us mostly due to the next reason.

 2) Unlike the Unix world, and I wish this were not the case for us, NetWare
 does not have an open development environment.  Our tools such as Code
 Warrior cost money and are not widely available.  Due to this fact we can
 not expect the average user to download, build and install Apache from
 source.  Our users depend on prebuilt binaries that will work in all
 NetWare configurations.  To my knowledge, and I hope I am wrong, there are
 only a hand full of developers that have actually downloaded the source and
 built it for NetWare in comparison to a relatively large number of NetWare
 users that have downloaded the binaries and are either playing with it or
 deploying it.  BTW, Apache 1.3.20 will be shipping with NetWare 6 so this
 relatively large number will grow even larger soon.

 3) Bill suggested that we look at the Win32 hooks.  I'm not quite sure what
 you mean by that.  Unless they are some type of Apache hook, it won't do us
 any good either.  NetWare does not have a hooking mechanism that will allow
 us to alter something like HTTP_ROOT at run-time.  When the Apache binary
 is envoked, the first thing we hit is main().  According to the code,
 def_server_root is initialized to HTTPD_ROOT and unless there is a -f or -d
 parameter specified, a hard coded path will be used and we will fail.

 The only possible workaround that I can see at the moment is #define'ing
 HTTP_ROOT as getcwd() which will at least get us in the ball park.  I would
 greatly appreciate any other suggestions from those who know this code much
 better than I do (which could be just about anybody :)  )

 thanks,
 Brad

  [EMAIL PROTECTED] Thursday, September 13, 2001 12:49:55 AM 

 On Wed, 12 Sep 2001, Greg Stein wrote:
  On Wed, Sep 12, 2001 at 10:34:03PM -0400, Rodent of Unusual Size wrote:
   * On 2001-09-12 at 21:11,
  
 Ryan Bloom [EMAIL PROTECTED] excited the electrons to say:
This is why we have config.layout.
  
   It is not just -f, it is -d as well.  I think most installations use
   either one of these or the default location set by the layout.
   Not a problem, I think.
 
  If the hard-coded default is never used, then why don't we just toss it,
  and require people to pass/use a root?

 It is used.  By default.  A default configure --prefix=/under/my/hat
  make  make install will result in the default defines being used.

 We need some way to know where to look for config files.  This can
 be done at compile time or at run time.

 Right now we support it being done at compile time with these defines.
 Lots of people do use it.  Note that it is designed so that it
 can be easily overridden from the #defined path at compile time, and
 it often is.

 It can be overridden at run time with command line options.  The
 original suggestion that started this thread was to base it off
 the current working directory.  I just don't see that offering any
 real advantage, since command line options are directly associated
 with the execution of the program, as opposed to the working directory
 which is a OS maintained bit of information.

-- 

__
Ryan Bloom  [EMAIL PROTECTED]
Covalent Technologies   [EMAIL PROTECTED]
--



RE: module is not compatible with this version of apache ......!

2001-09-13 Thread Farag, Hany M (Hany)

Hi, 
I'm tring to build apache 2.0.24 with a module that i written. I configured
and build apache with this mopdule and i got no errors but when i tried to
check if that module was actually included in the build I got the following
:
./httpd -l
httpd: module mod_nullservice.c is not compatible with this version of
apache .
Please contact the vendor for the correct verion

(although i followed the mod_example structure)
Any ideas !

Thanks
Hany



Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Ryan Bloom

On Thursday 13 September 2001 08:35 am, Brad Nicholes wrote:

I don't understand.  Nothing changed about this logic between 1.3 and 2.0.
What makes you think that the solution you are currently using for 1.3 won't
work in 2.0?

Ryan

You are right, we can use command line parameters and everything will
 work correctly.  The only concern I have is that with Apache 1.3.x we can
 install it, make some minor changes to the HTTPD.conf and invoker APACHE at
 the console.  Which means that the default configuration will work.  With
 Apache 2.0 we will now be saying that the default configuration will no
 longer work.  You must use the command line or you must install to
 sys:\apache or it will fail.  Basically what I am saying is that we don't
 have that restriction now.  Why should we introduce this restriction for
 Apache 2.0?

 Brad

  Marc Slemko [EMAIL PROTECTED] Thursday, September 13, 2001 9:23:24 AM
  

 On Thu, 13 Sep 2001, Brad Nicholes wrote:
 Thank you for the feedback but I am still concerned about how
  this is going to work on NetWare.  Here are the reasons why:
 
 
  1) NetWare like Win32 and OS2, does not have a configure utility
  therefore config.layout will do us no good at all.  In fact 99% of
  the compile time configuration is meaningless to us mostly due to
  the next reason.

 Then put it in httpd.h, where it already is:

 #elif defined(NETWARE)
 #define HTTPD_ROOT sys:/apache
 #else

 Then if it is installed in the default location, no flags are necessary.

  3) Bill suggested that we look at the Win32 hooks.  I'm not quite
 sure what you mean by that.  Unless they are some type of Apache
 hook, it won't do us any good either.  NetWare does not have a
 hooking mechanism that will allow us to alter something like
 HTTP_ROOT at run-time.  When the Apache binary is envoked, the
 first thing we hit is main().  According to the code, def_server_root
 is initialized to HTTPD_ROOT and unless there is a -f or -d parameter
 specified, a hard coded path will be used and we will fail.

 Why will you fail if it is installed in the hardcoded location?

 If not, then...

 Why can't users use command line parameters?  Netware supports them,
 right?

 Netware supports some type of scripting language doesn't it?  Why can't
 you have a control script (much like apachectl) that passes the appropriate
 command line options?

 I don't see why using command line options is so undesirable or why
 relying on a particular working directory when starting the server is
 better.  And I don't see any differences between Unix binary builds and
 netware; although a much higher percent of people can be expected to
 compile from source on unix, there are still a whole lot of binary builds
 used, and the current mechanisms work for them.  What am I missing?

-- 

__
Ryan Bloom  [EMAIL PROTECTED]
Covalent Technologies   [EMAIL PROTECTED]
--



Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Brian Havard

On Thu, 13 Sep 2001 09:08:53 -0600, Brad Nicholes wrote:

   Thank you for the feedback but I am still concerned about how this is going to 
work on NetWare.  Here are the reasons why:

1) NetWare like Win32 and OS2, does not have a configure utility therefore 
config.layout will do us no good at all.  In fact 99% of the compile time 
configuration is meaningless to us mostly due to the next reason.

Just for the record, I DO use configure on OS/2. (and yes, that's how it
should be written. The / only gets left out because it can't be included in
a file name :)

This is possible because most common unix utilities have been ported to
OS/2, including autoconf. However, few end users have them all installed so
most will run the binary package I build, putting them in the same
situation as Netware users in that they must either install in the same
place I did or specify the location with a switch. There's also no file
system standard so anything I pick isn't going to suit many people.

Wouldn't it make sense on most (all?) non unix platforms for the server
root  config files' default location to be relative to either the httpd
executable or the CWD at start-up?

-- 
 __
 |  Brian Havard |  He is not the messiah!   |
 |  [EMAIL PROTECTED]  |  He's a very naughty boy! - Life of Brian |
 --




Re: another map_to_storage gotcha.

2001-09-13 Thread dean gaudet



On 12 Sep 2001, Ian Holsman wrote:

 What I am suggesting is to move some of these configurations to
 Location / where they belong.

+1.

-dean




Re: Apache-1.3: question about mod_unique_id

2001-09-13 Thread dean gaudet

On Tue, 11 Sep 2001, Greg Stein wrote:

 On Tue, Sep 11, 2001 at 12:06:13AM -0500, William A. Rowe, Jr. wrote:
 ...
   where the code uses a pid (getpid()) you need to use a concatenation of
   pid and thread id.
  
   otherwise you violate some of the uniqueness guarantees.
  
   i just didn't bother trying to figure out how to get a thread id in any
   sort of portable way and left that to folks who actually wanted the module
   on those platforms.
  
   (this is actually mentioned in the comments near the top of the file
   describing how it works and the assumptions made.)
 
  As I've read.  IIRC there are some other subtle issues with the size of the
  unique key.  Be careful that we keep everyone in sync.

there shouldn't be any subtle issues with size of the key -- the format
was designed to make size differences unimportant.

  Seems that we now have 64 bit cpu's with potentially 64 bit pids.  This adds
  to the equation, it looks like we need to cut over to those extra four bytes
  across all platforms.

 Oh, screw all that mess :-)  Just use a UUID for the unique id. It has lots
 of bits, and it is already unique (by definition and without work).

i'm not convinced the UUID implementation in 2.0 is unique, or is as
robust as the technique mod_unique_id uses ... i started digging into this
months ago and never quite finished.  hopefully i'll get back to it and
see if i'm right or wrong.

64-bit pids don't seem likely at all.

-dean




Re: Apache-1.3: question about mod_unique_id

2001-09-13 Thread dean gaudet

On Wed, 12 Sep 2001, Günter Knauf wrote:

 For NetWare I found this definition in ./netware/os.h:
 #define getpid GetThreadID
 and in the NetWare header nwthread.h GetThreadID() is defined as:
 int   GetThreadID( void );

 for Win32 platform getpid() is defined in process.h:
 _CRTIMP int __cdecl _getpid(void);
 #define getpid _getpid

 I didnt find more information about these functions yet nor of other functions which 
I could use to concatenate with.
 Do you think that they are insufficient for use with mod_unique_id?
 On NetWare I assume that the ThreadID is always unique on the same machine, on Win32 
I dont know.

 The patch to get mod_unique_id compiled is only the #error ifdef:
 - #ifdef MULTITHREAD
 + #if defined(MULTITHREAD)  !(defined(NETWARE) || defined(WIN32))

if the netware thread id is truly globally unique then you can use it
alone.

but on windows you'll need to use both getpid() and GetThreadID... i think
it's called something similar to that.  it may be Get Thread Handle ...
what you really want is the thread * that create_thread returns, or you
could use the scoreboard slot, but i don't see an obvious way to get at
either.  also -- add an extra field to unique_id_rec for the thread id.

-dean




RE: module is not compatible with this version of apache ......!

2001-09-13 Thread Ian Holsman

On Thu, 2001-09-13 at 09:16, Farag, Hany M (Hany) wrote:
 Hi, 
 I'm tring to build apache 2.0.24 with a module that i written. I configured
 and build apache with this mopdule and i got no errors but when i tried to
 check if that module was actually included in the build I got the following
 :
try recompling the module
or doing a make clean
and then make.
..ian
 ./httpd -l
 httpd: module mod_nullservice.c is not compatible with this version of
 apache .
 Please contact the vendor for the correct verion
 
 (although i followed the mod_example structure)
 Any ideas !
 
 Thanks
 Hany
-- 
Ian Holsman  [EMAIL PROTECTED]
Performance Measurement  Analysis
CNET Networks   -   (415) 364-8608




Re: another map_to_storage gotcha.

2001-09-13 Thread Bill Stoddard


-  
  I keep on pointing out problems with map_to_storage because I keep on
  running into them when I am handling reverse proxying (a major component
  in our web design)
 
 Test cases are great :)  It's good to see a module (mod_proxy) immediately reap
 the benefits of this patch.  BTW - since Josh (?) isolated the optimization patch
 out of the potential ssl/php (?) problem - it might be worthwhile for a mod_proxy
 hacker to go back and reap that code for mod_proxy, as well.  Dunno if it has a
 real benefit, since it doesn't have the subrequests and redirects as frequently as
 file-based modules.
 
   The behavior you observe is neither a bug nor a misconfiguration.  Global Options
   should have (always) been set on Location /.  Filesystem Global Options should
   have (always) have been set on Directory / (at least since the patch for win32
   and relatives to allow even d:/ to be affected by Directory /).
  
  the problem is that in the standard httpd-std.conf the configuration is
  done in @@Serveroot@@/htdoc directory instead of Location /
  the way the current configuration 'out of the box' would not work
  properly for people serving pages off non-filebased systems.
  
  What I am suggesting is to move some of these configurations to
  Location / where they belong.
 
 Agreed - as you look at the two (both Directory and Location /) you might through
 your proposal at both this list and apache-docs for sanity review :)

+1

Bill




Re: [Fwd: video/vnd.mpegurl at ftp.isi.edu and default mime.types file.]

2001-09-13 Thread lars

According to Rodent of Unusual Size:

 Roundabout, rather.  I am not sure what his point is,
 but FWIW.

He would like to have audio/mpegurl and audio/x-mpegurl
added to mime.types by default.

IMHO this makes sense. +1 from me.

P.S.: Greetings from sunny Egypt.

ciao...
-- 
Lars Eilebrecht
[EMAIL PROTECTED]



RE: module is not compatible with this version of apache .... ..!

2001-09-13 Thread Farag, Hany M (Hany)

nope, still getting the same thing...

any other thoughts..

Hany

-Original Message-
From: Ian Holsman [mailto:[EMAIL PROTECTED]]
Sent: Thursday, September 13, 2001 1:05 PM
To: [EMAIL PROTECTED]
Subject: RE: module   is not compatible with this version of apache
 ..!


On Thu, 2001-09-13 at 09:16, Farag, Hany M (Hany) wrote:
 Hi, 
 I'm tring to build apache 2.0.24 with a module that i written. I
configured
 and build apache with this mopdule and i got no errors but when i tried to
 check if that module was actually included in the build I got the
following
 :
try recompling the module
or doing a make clean
and then make.
..ian
 ./httpd -l
 httpd: module mod_nullservice.c is not compatible with this version of
 apache .
 Please contact the vendor for the correct verion
 
 (although i followed the mod_example structure)
 Any ideas !
 
 Thanks
 Hany
-- 
Ian Holsman  [EMAIL PROTECTED]
Performance Measurement  Analysis
CNET Networks   -   (415) 364-8608



Re: Apache-1.3: question about mod_unique_id

2001-09-13 Thread William A. Rowe, Jr.

From: dean gaudet [EMAIL PROTECTED]
Sent: Thursday, September 13, 2001 11:45 AM


 
 but on windows you'll need to use both getpid() and GetThreadID... i think
 it's called something similar to that.  it may be Get Thread Handle ...
 what you really want is the thread * that create_thread returns, or you
 could use the scoreboard slot, but i don't see an obvious way to get at
 either.  also -- add an extra field to unique_id_rec for the thread id.

I suggest we add a gettid() if one does not exist, via the os.h/os.c for
MULTITHREAD platforms.  Anyone who wants to hack on this, just assume it's
available, and where it isn't, someone needs to implement (I'm happy to do
so for Win32.)




Re: Hard coded HTTPD_ROOT in httpd.h...

2001-09-13 Thread Günter Knauf

Hi,

 2) Unlike the Unix world, and I wish this were not the case for us,
 NetWare does not have an open development environment.  Our tools such as
This is the official statement of Novell; 
but Pavel has done very good work; and the gcc compiled Apache seems to be as stable 
as the CodeWarrior build; so we can look forward that we will get soon a stable open 
development for NetWare; and I am working on it to get more support from Novell; I got 
some positive replies; and first signs are there: preludes for gcc...

 Code Warrior cost money and are not widely available.  Due to this fact we
 can not expect the average user to download, build and install Apache from
 source.  Our users depend on prebuilt binaries that will work in all
 NetWare configurations.  To my knowledge, and I hope I am wrong, there are
 only a hand full of developers that have actually downloaded the source
 and built it for NetWare in comparison to a relatively large number of
 NetWare users that have downloaded the binaries and are either playing
 with it or deploying it.  BTW, Apache 1.3.20 will be shipping with NetWare
 6 so this relatively large number will grow even larger soon.
Unfortunately Brad is absolutely right with this; 
and all he mentioned was the reason why I made my page with the binaries, and the 
downloads show that many are interested in getting the latest development versions...

This is also the reason why Pavel tried to make the binaries compatible: Novell does 
not release the sources of their own Apache modules; so we have no chance to use 
module binaries build by Novell; and we cannot expect that Novell build them twice, 
one with CW and one with gcc.
Also I speak here explicitly about Novell, and not about Brad!! 
I'm now fighting about 1,5 years with Novell that they push back their Perl ports to 
CPAN!!

In addition to what Brad said we should explain for the others that NetWare 
development is always done on other platforms; no compiler runs on NetWare os yet; so 
most development is done on Win32 platform; a bit on DOS with older compilers; and 
since Pavel's success also now with gcc on Win32 and Linux.

Guenter.




[PATCH] Relative server root...

2001-09-13 Thread Brad Nicholes

   I would like to propose the following code changes for main.c.  These changes will 
allow a platform to use a relative server root that is based on argv[0] rather than a 
hard coded server root.  If these changes seem fair, I would like to check them in.

thanks,
Brad



--- \tempapache\httpd-2.0\server\main.c Fri Aug 31 16:52:43 2001
+++ main.c  Thu Sep 13 14:14:03 2001
@@ -230,6 +230,31 @@
 return process;
 }
 
+#ifdef USE_RELATIVE_SERVER_ROOT
+static char *get_def_server_root(apr_pool_t *pool, int argc, const char * const *argv)
+{
+char *s = HTTPD_ROOT;
+
+if (argc  0) {
+
+s = apr_pstrdup (pool, argv[0]);
+if (s) {
+int i, len = strlen(s);
+
+for (i=len; i; i--) {
+if (s[i] == '\\' || s[i] == '/') {
+s[i] = NULL;
+break;
+}
+}
+}
+}
+
+return s;
+}
+#endif
+
+
 static void usage(process_rec *process)
 {
 const char *bin = process-argv[0];
@@ -304,6 +329,10 @@
 pglobal = process-pool;
 pconf = process-pconf;
 ap_server_argv0 = process-short_name;
+
+#ifdef USE_RELATIVE_SERVER_ROOT
+def_server_root = get_def_server_root(pglobal, argc, argv);
+#endif
 
 #if APR_CHARSET_EBCDIC
 if (ap_init_ebcdic(pglobal) != APR_SUCCESS) {



RE: Optimizing dir_merge() AND RE: [BUG] mod_ssl broken

2001-09-13 Thread Doug MacEachern

On Thu, 13 Sep 2001, Sander Striker wrote:

can also reproduce with less in the mix:

Listen 8999
VirtualHost _default_:8999
Location /manual
#this can be any module with per-directory create+merge functions
RequestHeader add Foo bar
/Location
/VirtualHost

Location /manual
Order deny,allow
Deny from all
Allow from 127.0.0.1
/Location

0x40246225 in merge_headers_config (p=0x8230334, basev=0x0, 
   ^^^
overridesv=0x8220b54) at mod_headers.c:216
216 newconf-fixup_in = apr_array_append(p, base-fixup_in, 
overrides-fixup_in);


producable with any module that has a per-directory create and merge
function.  seems there needs to be merging with r-server-lookup_defaults, 
that is not currently happening.

if you remove the Location /manual from outside the vhost and put its
contents into the Location /manual inside the vhost, all is well.






RE: [PATCH] shmem.c - again

2001-09-13 Thread MATHIHALLI,MADHUSUDAN (HP-Cupertino,ex1)

Hi,
I was wondering if anybody got a chance to look at the patch. If
this looks okay, I was thinking of sending out a patch for the SSL Session
Caching using SHMHT  SHMCB.
Any feedback / suggestion is welcome.

Thanks
-Madhu

-Original Message-
From: MATHIHALLI,MADHUSUDAN (HP-Cupertino,ex1)
[mailto:[EMAIL PROTECTED]]
Sent: Wednesday, September 12, 2001 2:22 PM
To: [EMAIL PROTECTED]; '[EMAIL PROTECTED]'
Subject: [PATCH] shmem.c - again


Hi,
I've modified the shmem.c to have a another shared memory segment
for storing the allocation details. I've also tried to ensure that all the
computation is based on offsets (stored in the shared memory again) - so
that if different processes map the shared memory at different addresses,
the memory mgmt should still work.
As regards testing, I've done some minimal testing (testshmem,
shmcb, shmht) - but there may be lots of problems.. Also, the code may
require perf. tuning - I haven't yet looked into those aspects.. Pl. let me
know for any clarifications..
'waiting for your feedback / suggestions..

Thanks
-Madhu


-Original Message-
From: Ryan Bloom [mailto:[EMAIL PROTECTED]]
Sent: Sunday, September 09, 2001 5:39 PM
To: [EMAIL PROTECTED]; MATHIHALLI,MADHUSUDAN (HP-Cupertino,ex1);
'[EMAIL PROTECTED]'
Subject: Re: FW: [PATCH] shmem.c


On Sunday 09 September 2001 17:23, MATHIHALLI,MADHUSUDAN (HP-Cupertino,ex1)
wrote:
 Hi Ian,
 Thanks for the suggestion.. I certainly like the first idea (infact, that
 was also one of the idea I'd proposed earlier). But, I'm not sure how
 *open* are others to create a seperate shared memory just for maintaining
 the allocation table..

The only problem is going to be ensuring that the platform has enough
shared memory to handle both segments.  I think we can just return an
error if we run out of shared memory though.  IOW, +1 for having a second
shared memory segment for the control data.

Ryan


 As regards your second idea, I'm not comfortable with it - it'd introduce
a
 lot of performance overhead - especially with IPC's around..

 Thanks for your suggestions..
 -Madhu


 -Original Message-
 From: Ian Holsman [mailto:[EMAIL PROTECTED]]
 Sent: Sunday, September 09, 2001 3:54 PM
 To: [EMAIL PROTECTED]
 Subject: Re: FW: [PATCH] shmem.c


 Hi Madhu.
 the only way I can think of handling this is to store the memory
 block list in another piece of shared memory/mmap (allocated seperatly)

 The other method I can think of is to spawn a seperate process which
 would hold all the memory list information, and it would do all the memory
 management
 and the other processes would communicate it via some IPC.

 the problem is that shared memory is NOT guarnteed to be in the same space
 for
 each process.

 ..Ian





[PATCH] apache-1.3/src/support/apachectl

2001-09-13 Thread Sander Temme

Ever been bitten by this? I just had an overnight benchmark run go nowhere
because I believed apachectl's output and assumed httpd was running
correctly. The following patch makes apachectl at least look back to see if
httpd is running. It checks the presence of the PID file which should be
enough under normal circumstances, like in case there already is a httpd
deamon running.

Enjoy,

S.

--- src/support/apachectl~  Thu Sep 13 13:54:40 2001
+++ src/support/apachectl   Thu Sep 13 17:09:26 2001
@@ -69,7 +69,19 @@
continue
fi
if $HTTPD ; then
-   echo $0 $ARG: httpd started
+   sleep 1
+   if [ -f $PIDFILE ] ; then
+   PID=`cat $PIDFILE`
+   if [ x$PID != x ]  kill -0 $PID 2/dev/null ; then
+   echo $0 $ARG: httpd started
+   else
+   echo $0 $ARG: httpd (pid $PID?) not running
+   ERROR=3
+   fi
+   else 
+   echo $0 $ARG: httpd not running: no pid file
+   ERROR=3
+   fi
else
echo $0 $ARG: httpd could not be started
ERROR=3
@@ -91,7 +103,19 @@
if [ $RUNNING -eq 0 ]; then
echo $0 $ARG: httpd not running, trying to start
if $HTTPD ; then
-   echo $0 $ARG: httpd started
+   sleep 1
+   if [ -f $PIDFILE ] ; then
+   PID=`cat $PIDFILE`
+   if [ x$PID != x ]  kill -0 $PID 2/dev/null ; then
+   echo $0 $ARG: httpd started
+   else
+   echo $0 $ARG: httpd (pid $PID?) not running
+   ERROR=3
+   fi
+   else
+   echo $0 $ARG: httpd not running: no pid file
+   ERROR=3
+   fi
else
echo $0 $ARG: httpd could not be started
ERROR=5
@@ -115,7 +139,20 @@
if [ $RUNNING -eq 0 ]; then
echo $0 $ARG: httpd not running, trying to start
if $HTTPD ; then
-   echo $0 $ARG: httpd started
+   sleep 1
+   if [ -f $PIDFILE ] ; then
+   PID=`cat $PIDFILE`
+   if [ x$PID != x ]  kill -0 $PID 2/dev/null ; then
+   echo $0 $ARG: httpd started
+   else
+   echo $0 $ARG: httpd (pid $PID?) not running
+   ERROR=3
+   fi
+   else
+   echo $0 $ARG: httpd not running: no pid file
+   ERROR=3
+   fi
+   else
else
echo $0 $ARG: httpd could not be started
ERROR=5


-- 
Covalent Technologies [EMAIL PROTECTED]
Engineering groupVoice: (415) 536 5214
645 Howard St. Fax: (415) 536 5210
San Francisco CA 94105

   PGP Fingerprint: 1E74 4E58 DFAC 2CF5 6A03  5531 AFB1 96AF B584 0AB1

===
This email message is for the sole use of the intended recipient(s) and may
contain confidential and privileged information. Any unauthorized review,
use, disclosure or distribution is prohibited.  If you are not the intended
recipient, please contact the sender by reply email and destroy all copies
of the original message
===




Re: another map_to_storage gotcha.

2001-09-13 Thread Greg Stein

On Thu, Sep 13, 2001 at 12:24:03PM -0400, Joshua Slive wrote:
  -Original Message-
  From: Ian Holsman [mailto:[EMAIL PROTECTED]]
  What I am suggesting is to move some of these configurations to
  Location / where they belong.
 
 I don't see any config directives that belong in Location /.
 Please be more specific before you do anything.

Options Indexes
AllowOverride None
Order allow,deny
Allow from all
AddHandler type-map var
DirectoryIndex index.html index.html.var

The only thing that is filesystem specific are:

Options FollowSymLinks

  (BTW.. there are NO 'location' directives installed in the
  httpd-std.conf)
 
 There are commented out location directives for /server-status and
 /server-info
 
 In general, I think this is proper.  Most people serve content from the
 filesystem. When serving content from the filesystem, directory should be
 used in preference to location for the reasons I mentioned a couple days
 ago in another thread.  We should not be encouraging people to use
 location except in specific circumstances.

Location / is different. It is setting global configuration for the whole
server. It ensures that you don't miss some critical bits.

And your cut/dry Directory good. Location bad. does not hold. All of my
configurations are Location based. That is because accessing the content
through one location gives you DAV capabilities, and the other location
gives your PHP- or SSI-processed content.

With Subversion, we *only* have Location directives. There is absolutely
nothing on the disk to serve.

Location is an important directive and needs to be used in many, many
cases.

In this particular case, the problem arose because the attempt to set
global options broke down. It was set only for one directory, not the
whole server URL space. Using Location / fixes that.

Cheers,
-g

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



Re: Apache-1.3: question about mod_unique_id

2001-09-13 Thread Greg Stein

On Thu, Sep 13, 2001 at 09:35:43AM -0700, dean gaudet wrote:
 On Tue, 11 Sep 2001, Greg Stein wrote:
...
   Seems that we now have 64 bit cpu's with potentially 64 bit pids.  This adds
   to the equation, it looks like we need to cut over to those extra four bytes
   across all platforms.
 
  Oh, screw all that mess :-)  Just use a UUID for the unique id. It has lots
  of bits, and it is already unique (by definition and without work).
 
 i'm not convinced the UUID implementation in 2.0 is unique, or is as
 robust as the technique mod_unique_id uses ... i started digging into this
 months ago and never quite finished.  hopefully i'll get back to it and
 see if i'm right or wrong.

Well, for Apache 1.3, you definitely can't use the APR UUID stuff :-)

On Windows, for 1.3, you can simply call CoCreateGuid() and be done with it.
And the Windows guids are unique.

[ I seem to recall this thread started as a result of a Windows problem;
  UUIDs would solve it for that platform. maybe it was Netware? ]


Regarding APR's UUID solution: if you think it isn't good enough, then I'd
be interested in knowing. It collects a decent amount of see and then hashes
it to get a random result. If there is more seed data that we could use,
then we should.

Cheers,
-g

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



Re: Apache-1.3: question about mod_unique_id

2001-09-13 Thread Greg Stein

Does Netware have UUIDs or a similar thing?

Cheers,
-g

On Thu, Sep 13, 2001 at 03:06:21PM -0600, Brad Nicholes wrote:
I checked with our CLIB people and they tell me that GetThreadID is *not* unique. 
 In other words, if a thread is created, it is assigned an ID.  If that thread is 
terminated and a new thread is created, the new thread may reuse the ID from the 
terminated thread.
 
 Brad
 
  [EMAIL PROTECTED] Thursday, September 13, 2001 2:57:08 PM 
 Hi Bill,
  From: dean gaudet [EMAIL PROTECTED]
  Sent: Thursday, September 13, 2001 11:45 AM
 
 
 
  but on windows you'll need to use both getpid() and GetThreadID... i
  think
  it's called something similar to that.  it may be Get Thread Handle ...
  what you really want is the thread * that create_thread returns, or you
  could use the scoreboard slot, but i don't see an obvious way to get at
  either.  also -- add an extra field to unique_id_rec for the thread id.
 
  I suggest we add a gettid() if one does not exist, via the os.h/os.c for
  MULTITHREAD platforms.  Anyone who wants to hack on this, just assume it's
  available, and where it isn't, someone needs to implement (I'm happy to do
  so for Win32.)
 ok, sounds good. Then based on Dean's post and when Brad confirms that GetThreadID 
is always unique for NetWare we have only to add:
 #define gettid GetThreadID
 
 and in mod_unique_id.c we can remove the error warning and then change:
 pid = getpid();
 to:
 #ifdef MULTITHREAD
 pid = gettid();
 #else
 pid = getpid();
 #endif
 
 On the other side I saw that some other sources inside Apache use getpid(), is this 
not a problem there too? And if only Win32 has an insufficient getpid() definition, 
it may be enough to redefine this only there and leave all other as is...??
 
 Guenter.

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



Re: another map_to_storage gotcha.

2001-09-13 Thread Alex Stewart

Slive, Joshua wrote:
 1. (Important) As OtherBill has been trying to point out, Location is
 applied after Directory.  Therefore,
 if you put these things in Location /, lots of things in Directory will
 fail to work.  People won't understand why
 this doesn't deny access to anything:
 
 Location /
 Order allow,deny
 allow from all
 /Location
 Directory /path/to/really/secret/stuff
 deny from all
 /Directory

And, IMO, this is just plain wrong, and needs to be fixed.  It should 
never be possible for Location to override Directory with looser 
access restrictions, just as it should not be possible for Directory 
to override Location with looser permissions.  In both cases, access 
should be determined by the most restrictive specification for a given 
resource.  Doing anything else opens up lots of opportunities for 
accidental security holes and is just bad design.

-alex




Re: Apache-1.3: question about mod_unique_id

2001-09-13 Thread dean gaudet



On Thu, 13 Sep 2001, Brad Nicholes wrote:

I checked with our CLIB people and they tell me that GetThreadID is
 *not* unique.  In other words, if a thread is created, it is assigned
 an ID.  If that thread is terminated and a new thread is created, the
 new thread may reuse the ID from the terminated thread.

sorry -- i meant unique across multiple processes ... that is process 1
and process 2 couldn't both have a thread 57.  (istr netware has processes
and has a global shared memory space...)

tid re-use is in principle a problem, but it requires a single thread to
serve thousands of requests per second (too lazy to do the math right
now).  but also i don't think we kill/restart threads in the 1.3
multithreaded server, so it's in practice not a problem at all.

 ok, sounds good. Then based on Dean's post and when Brad confirms that
 GetThreadID is always unique for NetWare we have only to add: #define
 gettid GetThreadID

 and in mod_unique_id.c we can remove the error warning and then change:
 pid = getpid();
 to:
 #ifdef MULTITHREAD
 pid = gettid();
 #else
 pid = getpid();
 #endif

no -- 'cause the tid is not unique in general in the way i was describing.
on unix it's possible to have pid 50 and pid 60 both with tid 1.  you need
the pid as well.  (we start multiple processes and multiple threads within
each in the 1.3 threaded server.)

 On the other side I saw that some other sources inside Apache use
 getpid(), is this not a problem there too? And if only Win32 has an
 insufficient getpid() definition, it may be enough to redefine this
 only there and leave all other as is...??

it's sufficient for most other uses...  the insufficiency is that there's
a thread-local counter in mod_unique_id (to avoid the need for a mutex)
and it needs the tid to distinguish its counts from other threads.

-dean