rbb in httpd

This stuff shouldn't have been committed. This is the SSL upgrade stuff,

and it was included in a commit that shouldn't have touched these files.

If the server is configured with an accept mutex type that isn't comaptible

with perchild, then force it to be FCNTL.

PR: 13311

Fix a compile of compiler warnings. I don't know how these slipped past.

Also, uncomment a line of code that the last commit should have uncommented.

Randall found this line and the fix, but I forgot to uncomment this line

along with the fix.

Fix receive_request, it was using the same location in the iovec for both

headers and body.

Submitted by: Randall Stewart <>

Fix the docs for ChildPerUserId.

We can't just create the temporary file in the current directory. If that

directory isn't writable, htpasswd won't work. This adds a function

whose responsibility it is to find a valid directory for temporary files.

Aaron reminded me that this was in 1.3 as well.

Sander reminded me that this was out of date.

back out the stuff from mod_ssl that shouldn't have been committed.

/me wonders why we have generated content in CVS. :-(

Call out the success cases when we don't get APR_SUCCESS back from the

network write. All other status codes result in c->aborted being set,

which allows the logs to note that the connection was aborted. Previous

to this patch, if the network cable was unplugged on the client, the server

would get APR_ETIMEUP, but we wouldn't note that the connection was


Submitted by: Ryan Morgan <>

Allow CGI scripts that use POST and mod_dav to exist in the same location.

Mod_Dav was always setting the r->handler field to "dav_handler", but

this means that mod_cgi won't run the script. According to my reading

of the DAV RFC, mod_dav shouldn't do anything at all with a POST request,

because it is impossible to know if the POST was meant for DAV or for some

other resource. We used to excuse POST from DAV processing, so I have

re-enabled that behavior.

PR: 13025

Back out some changes that should't have been committed.

Allow the UserDir directive to accept a list of directories.

This matches what Apache 1.3 does. Also add documentation for

this feature.

PR: 9299

Submitted by: Jay Ball <>

Re-order header files in suexec.c. This adds apr.h, which is required

to get the apr macros. Other than that, it is just for clarity.

SuExec should use /usr/local/apache2 not /usr/local/apache as the default


PR: 8789, 13104

Submitted by: SangBeom han <>

This commit gets Perchild working again. There are holes in this code

big enough to drive a truck through, and it is NOT production quality,

but I have successfully passed file descriptors between processes and

served requests over the passed descriptors. This code needs documenting,

and vetting still.

Also, in order to make things work, I had to insert the socket and the

data read by the original process into the bottom of the filter stack so

that the new process could use that information. Unfortunately, that isn't

possible to do cleanly, so I search for the CORE_IN filter, and I insert

a brigade that I have created into it's ctx pointer. This is a hack, and

it means that Perchild _only_ works if you use the core filters. Until I

find a better way to get that information to the bottom of the filter

stack, that is just how it is going to be.

Cliff pointed out my spelling mistake.

I don't work for Covalent anymore.

After an install, the default config files are useful. After an upgrade

they aren't.

If the config directive's syntax changed, Apache will tell

you which one changed, and the docs are a better place to go for details

then the default config files. BTW, the syntax of a directive hasn't

changed for a VERY long time.

If the semantics changed, then nobody will ever know that they need to

look in the default config files to determine that they semantics changed,

because there is no error message.

The argument that you want to be able to get the defaults back doesn't

hold water, because 99.9% of all admins backup their files before

modifying them. If you aren't backing them up, then that is your problem.

The argument that you may not have a full config directory also doesn't

hold water, because the assumption is that the conf/ directory is coming

from a working server.

Add some debugging logic to perchild. This is almost working now, we just

aren't popping out of apr_poll if there is data on the Unix Domain Socket.

Once that is fixed, this MPM _should_ work again.

Get the prefork MPM using the apr_poll interface directly instead of going

through the old functions which are only still available for backwards


The instructions provided earlier today were incorrect (my fault, I used

the wrong directory name). Fix the docs to match reality.

Submitted by: Thomas Eibner <>

Covalent moved a while ago.

Bring Apache in line with APR's new poll implementation. This isn't

optimal, because it still uses the compatibility functions to make it

work, but it does work. The next step will be to take the memory for

the pollsets under Apache's control.

VC6 is unable to deal with dependencies that are still due to be made.

This moves around the order of compilation around so that the error goes


PR: 10130

Submitted by: James Cox []

htpasswd needs to add a newline at the end of each record.

PR: 10422

Submitted by: Thom May []

Get the perchild MPM starting different child processes with different

users and groups. It doesn't pass requests between child processes yet.

I got sick of the error messages from copying the header files. This

removes all of the error messages.

Preserve existing installation directories. We copy over binaries,

the build directory, the headers, and the man pages. Everything else,

the config, htdocs, manual, error, icons, and cgi directories are

not installed if the directories already exist. I got sick of having

to re-edit printenv for my tests, and this is the same logic 1.3 used.

Fix a long-standing bug in 2.0, CGI scripts were being called

with relative paths instead of absolute paths. Apache 1.3 used

absolute paths for everything except for SuExec, this brings back

that standard.