Ryan Bloom [Tue, 11 Jul 2000 19:00:16 +0000 (19:00 +0000)]
Remove all pthreads calls from the mpmt MPM prefork emulation. This makes
the mpmt MPM look almost exactly like the original prefork MPM. Basically,
all that's left is re-naming the defined directives so they work with 1.3
config files. That will come later.
make sure this is defined, so that mpm_common.c compiles with the right
values, functions, whatever. specifically, ap_reclaim_child_processes()
was not getting compiled into mpm_common.
this appears to keep mpmt_pthread running properly. dunno whether a similar
issue exists for prefork or dexter. (until all are torched)
Advisory: This patch is still anywhere but complete. However, it
resolves most of the big bugs of the services to mpm relocation.
I apologize that it's taken this long to get back on this.
Brought across; Keep console open (needs a bit of cleanup and could
be done better now for 2.0), service error event logging, and some
other minor threading cleanup.
Big issues remain: logged errors (even APLOG_STARTUP) drop into the
logfile in spite of our interest in getting them to the user's console.
Some threading sequences may yet be out of sorts, and those will be
cleaned up by the end of the week.
Bill Stoddard [Mon, 10 Jul 2000 21:49:22 +0000 (21:49 +0000)]
Reimplement ap_send_fd. Eliminate ap_send_fd_length. If APR_HAS_SENDFILE is
defined but ap_sendfile fails with APR_ENOTIMPL, the BUFF implementation
of ap_send_fd will get a shot at serving the request. This fix is
required to get Apache working on 95/98 again and can also be useful on
Unix systems where sendfile is available via a servicepack/fixpack/PTF
on a particular level of the OS (e.g., AIX 4.3.2 base does not include
sendfile but is is available with a PTF).
This fix also reimplements the mod_file_cache sendfile_handler using
ap_send_fd and sets the connection aborted flag if the sendfile fails.
Future modification... Add code to ap_send_fd to hijack any data in the
client BUFF structure and send it along with the sendfile.
Ryan Bloom [Mon, 10 Jul 2000 21:37:23 +0000 (21:37 +0000)]
Move setup_listeners to listen.c. This renames it to ap_setup_listeners,
and removes the duplicated code from all effected MPMs. The only this
doesn't touch, is Windows. That MPM was using a different setup_listeners.
If one of the Windows guys would like to modify the WinNT MPM to use the
same setup_lsiteners, that would be VERY cool.
Ryan Bloom [Mon, 10 Jul 2000 18:21:24 +0000 (18:21 +0000)]
Move process_child_status to mpm_common.c. This requires re-naming it
to ap_process_child_status and opening up ap_coredump_dir. I have
modified all of the MPMs that I saw using this function to work with this
patch. Sorry if I broke anybody.
Ryan Bloom [Mon, 10 Jul 2000 15:07:40 +0000 (15:07 +0000)]
Stop doing the find for make clean. This was causing us to clean every
directory twice. We should still clean those directories that weren't
configured in the current configuration, but this wasn't the right
solution.
complete the removal of the old dav_dyn crap. dav plugins are now
implemented entirely through standard Apache modules, hooks, and some
additional registration.
new liveprop namespace registration and lookup. modules register each
namespace they will use, which then receives a process-wide index.
get rid of old dav_liveprop_uris global (and minor cleaning in dav_dyn);
encapsulate liveprop handling in liveprop.c.
do not build/use an ns_map; use dav_get_liveprop_ns_index().
Ryan Bloom [Sun, 9 Jul 2000 23:12:44 +0000 (23:12 +0000)]
Fix mpm_common for use with the real prefork MPM. This was broken when
mpmt was added. This change can be removed when the MPM stuff calms down
a bit and either mpmt or three separate MPMs are chosen.
Ryan Bloom [Sun, 9 Jul 2000 18:54:08 +0000 (18:54 +0000)]
Fix building the mpmt MPM. The problem was that IfModule uses the name of
the C file to determine if a module is present. mpmt emulates three
different MPMs though. If the default config file we have sane defaults
for each of the three MPMs that mpmt emulates.
To fix this, the build process creates a soft link to the original MPM name
during the configure process, and the build process actually compiles that
file, instead of the original mpmt.c. This allow the mpmt MPM to work
just as well as mpmt_pthread.
Ryan Bloom [Fri, 7 Jul 2000 17:35:41 +0000 (17:35 +0000)]
Initial version of the mpmt MPM. This MPM can emulate dexter, mpmt_pthread,
and prefork. This basically just combines a lot of common code. This
builds and serves pages in all three modes, but I don't think killing
the server works in any of them. The configuration system hasn't changed
at all, so using --with-mpm=(prefork|dexter|mpmt_pthread) all work.
My goal is to remove the three separate MPMs in a few days, and then work
on merging one of the BeOS and the OS/2 MPMs into this as well. :-)
do the "get resource" via a hook rather than through the repository hook
structure. once the resource is retrieved, then we have the relevant
repository hooks and can dispatch through those.
some additional tweaks to use lockdb->hooks rather than fetching them
Bill Stoddard [Fri, 7 Jul 2000 02:39:00 +0000 (02:39 +0000)]
This patch fixes several problems with mod_file_cache
- Pool usage problem
- SIGSEGVs when both MMapFile and CacheFile directives are present. The fix combines
the cleanup routines and only cleans up resources when appropriate.
- Log sendfile errors.
Submitted by: Greg Ames
Reviewed by: Bill Stoddard
Jeff Trawick [Thu, 6 Jul 2000 21:25:19 +0000 (21:25 +0000)]
Fix the way that ap_rwrite() checks for an error from ap_bwrite().
A dropped connection could cause a loop in ap_send_mmap() (and probably
a few other places) because of this problem.
Bill Stoddard [Thu, 6 Jul 2000 17:48:41 +0000 (17:48 +0000)]
Temporarily disable lingerling close until I can get the sendfile path right.
This avoids a seg fault when we try to shutdown then close a socket that has
been reset by the client.
Ryan Bloom [Thu, 6 Jul 2000 00:09:48 +0000 (00:09 +0000)]
Fix make distclean and make clean. Before this commit, we only cleaned
directories that have been configured by the last call to ./configure.
This means that if somebody does ./configure --with-mpm=dexter;make and
then ./configure --with-mpm=prefork;make and then make distclean, dexter
doesn't get cleaned up. Same thing goes for clean.
All this does is with distclean and clean, after we have recursively
gone through the tree to clean everything, we do a quick find to get all
of the left-over Makefiles. Then we just do the same operation on those
directories.
Bill Stoddard [Wed, 5 Jul 2000 19:40:39 +0000 (19:40 +0000)]
Allocate iols out of the ptrans pool rather than mallocing them out
of the heap. The extra malloc/free is a significant performance
hit on some platforms and repeatedly alloc/freeing small chunks of storage
can fragment the heap.
Jeff Trawick [Wed, 5 Jul 2000 18:52:57 +0000 (18:52 +0000)]
Get rid of some warnings in mod_file_cache by moving to the
new command-handler initialization macros.
Submitted by: Greg Ames
Reviewed by: Jeff Trawick
Jeff Trawick [Wed, 5 Jul 2000 18:44:37 +0000 (18:44 +0000)]
struct a_file needs field mm to compile at all when
APR_HAS_MMAP is defined
check for APR_HAS_SENDFILE around the declaration of
file; most of the other sendfile logic does this already
Submitted by: Greg Ames
Reviewed by: Jeff Trawick
Ryan Bloom [Wed, 5 Jul 2000 18:01:52 +0000 (18:01 +0000)]
Remove some warnings from the latest compile. I don't know why these
haven't turned up before. We were using the wrong types in our printf
calls for times.
This updates mod_dav for the util_xml changes posted previously:
* dav_xml -> ap_xml, and dav_text -> ap_text renaming
* Add 'dav_elem_private' to hook mod_dav-specific info up to the
parsed XML tree. Initialize this in several places, I think I got
all necessary? [gjs: yes, you did]
* Removal of the old "gross_hack", and all the XML code that was
moved into util_xml
Submitted by: Joe Orton <joe@orton.demon.co.uk>
Reviewed by: Greg Stein
This patch is a first pass at making util_xml.c independent of mod_dav:
* Rename dav_* to ap_xml_* for exported interface
* Remove dav_* from private functions
* Move text_header handling in from dav/main/util.c
* Move XML tree -> text conversion in
* Add include/util_xml.h header from parts of mod_dav.h
Submitted by: Joe Orton <joe@orton.demon.co.uk>
Reviewed by: Greg Stein
re-enable the "move by rename" optimization (now that we have the
ap_finfo_t.device field)
re-enable the "executable" live property (now that we have a chmod()
equivalent in ap_setfileperms())
misc const cleanups and others issues found using maintainer-mode
(initial errors found by Ryan Bloom).
also switch to use new command table initializer macros.
run DAV's type_checker first so that it can grab the non-GET methods (it
will pass thru GET for normal processing)
fix the DBGn() macros for Apache 2.0
filter out the warning that AC_TRY_RUN gives us while running the
AC_C_BIGENDIAN macro. we've already handled the cross-compile case,
so we don't need to see the message
config magic for enabling DAV, Expat, and SDBM.
*) AP_LIBS contains the target .a files from src/lib/
*) AP_LIB_DIRS contains add'l directories (besides pcre and apr) that we
will build (and generate Makefiles for)
*) apache_need_expat and apache_need_sdbm are two new configure feature
macros; set by the DAV stuff as needed
*) hackery to deal with dav/fs/ since it isn't really a module
*) do endian testing, so we can feed it into Expat to optimize that code
Ryan Bloom [Fri, 30 Jun 2000 21:18:26 +0000 (21:18 +0000)]
Remove ap_get_server_conf() from the MPM's that implement. The only place
this function was ever called was inside the MPM's, and not all of the
MPM's actually had the function. This is part of another round of common
code clean-up.
Ryan Bloom [Fri, 30 Jun 2000 19:57:49 +0000 (19:57 +0000)]
Fix the problem with ./buildconf not working right out of CVS. The
general problem, is that we were using AC_CONFIG_AUX_DIR_DEFAULT, which
the autoconf source says shouldn't be called directly. It should be
called using AC_REQUIRE, but I couldn't make that work. So, since we know
exactly where the files that we are looking for are located, we'll just
point autoconf directly to them, and ignore all of the hoops. :-)
I am not convinced the AC_CONFIG_AUX_DIR(.) call that I am using is
strictly necessary, but it doesn't cause any problems and it logically
makes sense.
Ryan Bloom [Fri, 30 Jun 2000 18:08:13 +0000 (18:08 +0000)]
Combine some common code. Before this, all platforms implemented their
own iol_sockets using APR. This just combines all of that code to a
common file and moves that file to main. I have tested this with all of
the Unix MPM's, but I am willing to bet I missed something (Makefiles) for
Windows, and possibly moving some code for OS/2 and BeOS.
Ryan Bloom [Fri, 30 Jun 2000 14:45:15 +0000 (14:45 +0000)]
I am removing my veto and stepping away from this discussion for at least
two days. This does NOT mean I like the patch at all, it just means I have
no desire to continue with this discussion right now. Because I have no
plans to respond to any more e-mail on the topic currently, I have no right
to veto a patch.
Ryan Bloom [Wed, 28 Jun 2000 16:55:45 +0000 (16:55 +0000)]
Remove the config stuff from the STATUS file. I believe the configuration
in 2.0 is as clean as it's going to get now. Most of the cruft has been
removed. Any more changes that are needed to make the configure system
work can easily be added within the current configuration framework.
Also, update CHANGES to reflect the recent changes to the config system.
Ryan Bloom [Wed, 28 Jun 2000 16:31:02 +0000 (16:31 +0000)]
Finish the Configuration cleanup. This basically merges all of the
autoconf scripts that APR provides for other programs into apr_common.m4.
Other programs can then just include that file to get the APR checks that
are required.
Submitted by: Sascha Schumann <sascha@schumann.cx>
Greg Stein [Wed, 28 Jun 2000 08:55:58 +0000 (08:55 +0000)]
initial checkin of the new Apache DAV code. this is a pristine copy of
mod_dav 1.0.1 (tag "V1_0_1" in the mod_dav CVS repository).
For historical information about these files, see the (old) mod_dav web
site at http://www.webdav.org/mod_dav/. CVS repository information can
be located from those pages.
Hook functions aren't translated (and when they are, they are _NONSTD)...
but you don't need to export a function you will pass by ref to a
register hook function.
Ryan Bloom [Tue, 27 Jun 2000 23:12:23 +0000 (23:12 +0000)]
Fix the configure process. This does a couple of things to allow APR and
Apache to share information.
1) Move the calling of APR after Apache decides which MPM is run, but
before Apache generates the Makefiles and related files. This allows
Apache to setup the threading cache values, while still allowing APR
to generate APRVARS in time for Apache to use it.
2) Setup the cache files correctly for RUN_NOW configured subdirectories.
Bill Stoddard [Tue, 27 Jun 2000 22:39:13 +0000 (22:39 +0000)]
Fix another compiler warning. Forgot to commit this one along with the
earlier patch. Sorry...
Submitted by: Victor Orlikowski
Reviewed by: Bill Stoddard
Ryan Bloom [Tue, 27 Jun 2000 22:35:53 +0000 (22:35 +0000)]
Pass the configure args to sub_configure scripts with the RUN_NOW macro.
This allows people to specify --disable-threads on Apache's configure
command line, and APR respects it. This is the first step to fixing a
problem introduced by making Apache call APR's configure script before
making any config decisions.