Ben Hyde [Thu, 7 Oct 1999 20:48:26 +0000 (20:48 +0000)]
Well this was thought provoking.
Drive out the use of malloc in two places.
In listen.c, using the global process pool instead. That changes the
API into listen so that a process is passed in rather than the config
pool. That's all was easy.
The pain is propogating a change into all N of the mpm, they
are all similar but different in their use of listen.c There
is a lot to dislike about similar but code scattered code.
I changed the N setup_listener routines, they now take only
the server since they can dig the config and global pool
out of there.
Free today: ap_setup_prelinked_modules now takes the process so it
can allocate it's table in the process's pool rathern than use
malloc.
Ben Hyde [Thu, 7 Oct 1999 18:13:17 +0000 (18:13 +0000)]
Add process_rec to the top of {server,connection,request}_rec
hierarchy of structs that abstract server activities. Store some
stuff in process_rec (finally a place to have nearly guiltless
globals) for example the global and configuration pools. Put some
operations on process_rec in http_main, in particular the
destroy_and_exit operation, and the use it to do all the exit calls.
Change ap_read_config to operation on this "object" rather than on the
configuration pool. Modify server_rec to point to the process, so you
can get at it most all the time which should finally allow most of the
server's malloc calls to be eliminated.
There are no locks in the process struct as yet, put them in as needed.
Some of the hooks should take this rather than conf. pool.
Ben Hyde [Thu, 7 Oct 1999 14:32:06 +0000 (14:32 +0000)]
Man! This file vastly improved. Thanks Dean!
Use the abstraction API_EXPORT_NONSTD for exporting main (aka
apache_main). Use clear rather than destroy on ptemp as other
'systolic' pools do. That also fixing a leak of the first ptemp
created. Let the destroy of pglobal to all the cleanup. Meanwhile,
all exit paths should destroy pglobal so the cleanup/unwind gets run
and this routine sets a bad example by having many exits that don't -
another day.
PR:
Obtained from:
Submitted by:
Reviewed by:
Ryan Bloom [Wed, 6 Oct 1999 23:04:16 +0000 (23:04 +0000)]
Bring file_io up to the new parameter order for APR. I have decided to do
these on a directory by directory basis for the rest of APR. I hope to
cause fewer problems for other developers by doing it this way.
Bill Stoddard [Tue, 5 Oct 1999 05:14:43 +0000 (05:14 +0000)]
Update ap_send_fd() and ap_send_fd_length() to use an ap_file_t. Hummm...
Still need to get sendfile() in. First, lets get the serving basically
working again :-)
Ryan Bloom [Mon, 4 Oct 1999 17:24:52 +0000 (17:24 +0000)]
Simple name change. the function ap_gets has been renamed to ap_fgets.
This is more in-line with what the function does, and how it acts, so
it makes sense.
Ryan Bloom [Mon, 4 Oct 1999 16:38:16 +0000 (16:38 +0000)]
First patch to re-order function parameters. This one gets the low hanging
fruit, and moves most of the result parameters to the first argument.
Future patches in this series will move the rest of the result parameters
to the beginning of the list, and will move the context's to the end of the
list
BTW, how can it be that nowadays it can happen that the Apache Group has a
source tree which doesn't compile under Unix for more than two weeks (I was
busy with exams and it didn't compile src/support/ already there)? In the past
this was definitely not possible. Seems like the source-centered hacker focus
drifts away... sorry, for me this seems like a horrifying evolution, friends.
Please let us always make sure that the source at least compiles. I don't want
to say it should also run, but hell, it should at least compile and if not it
should be fixed within a few days...
Restarts were hosed after the APR changes because we were opening
sockets even when we had them open already. So, for now, add an "active"
flag that indicates whether the socket stored in the listen_rec is an
actual open socket yet.
Move ap_pregcomp and ap_pregfree from APR to Apache proper, since these
functions depend on Apache's regex libraries. This also should fix
compilation on platforms not using hsregex.
Ryan Bloom [Tue, 14 Sep 1999 13:37:45 +0000 (13:37 +0000)]
A change to how APR uses user data. Now, user data is a linked list that
is retreivable using a char string. Basically, you provide a string that
will be used as a key when you store the data. If the key was used before,
we will overwrite the old data. When you want to retreive your data, pass
in the same key, and we will find the data you care about. This also makes
it harder to put user data in when creating a context, so that option has
disappeared. It is also impossible to inherit user data from parent contexts.
This option may be added in later. I will be documenting this VERY soon.
Ryan Bloom [Sat, 11 Sep 1999 15:58:37 +0000 (15:58 +0000)]
This change should allow Apache to build on all platforms with the popenf
changes. I have not been able to test this, but it should be evident what I
am doing if it doesn't work.
Ryan Bloom [Wed, 8 Sep 1999 14:15:55 +0000 (14:15 +0000)]
Remove all of the calls to functions like "ap_popenf". These functions were
moved down to APR, but they are being removed. They are not portable, and
were only moved down for backwards compatability. With this change, they can
be safely removed, which is the next commit on it's way.
Submitted by: Ryan Bloom and Paul Reder
More TPF-related changes. Among them:
- Code reorganization to eliminate some TPF #ifdefs
- Tweaks to the regex code for easier testing
- Documentation and build updates
- Notes in the CHANGES file
Submitted by: David McCreedy <McCreedy@us.ibm.com> and others at IBM
Fix the following bunch of warnings in dexter MPM:
egcc -c -I../../../os/unix -I../../../include -I../../../modules/mpm/dexter
-pipe -O2 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-align
-Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline
-Wno-long-long -funsigned-char -DTARGET=\"apache\" -DUSE_EXPAT
-I../../../lib/expat-lite `../../../apaci` dexter.c
dexter.c:188: warning: no previous prototype for `clean_child_exit'
dexter.c:491: warning: no previous prototype for `ap_start_shutdown'
dexter.c:504: warning: no previous prototype for `ap_start_restart'
dexter.c:682: warning: declaration of `pconf' shadows global declaration
dexter.c: In function `setup_listeners':
dexter.c:683: warning: declaration of `pconf' shadows global declaration
dexter.c: In function `process_socket':
dexter.c:744: warning: pointer targets in passing arg 3 of `getsockname'
differ in signedness
dexter.c: In function `worker_thread':
dexter.c:932: warning: pointer targets in passing arg 3 of `accept' differ in
signedness
dexter.c: In function `ap_mpm_run':
dexter.c:1365: warning: declaration of `i' shadows previous local
dexter.c: At top level:
dexter.c:1404: warning: declaration of `pconf' shadows global declaration
dexter.c: In function `dexter_pre_config':
dexter.c:1405: warning: declaration of `pconf' shadows global declaration
Bill Stoddard [Fri, 27 Aug 1999 22:57:27 +0000 (22:57 +0000)]
A bunch of changes to get the server compiling on WIN32. mod_cgi, mod_include,
mod_isapi and mod_so don't work so I am not making them. Moved a lot of code out
of multithread.* and into os.* (didn't want to add multithread to the new repository).
Much of this can be cleaned up when APR is stable.
And Dean's gonna but me for sure for the http_main hit. It's may be
possible to name a DLL entry point 'main()'. Just havent tried it yet.
Some cleanups. Among other things:
- The scoreboard is gond, so we don't call it that anymore
- We were accessing the child table through a weird combination of
wrappers and direct access; just switch to direct access and get rid
of scoreboard.[ch]
Be consistent with how we indicate child death and use status =
SERVER_DEAD instead of pid = 0. I don't think this actually caused any
bugs, but just in case...
Now that this beast was officially declared as the Apache 2.0 stuff, let it
also say this in his Server headers while testing. Those who dislike numbers:
feel free to name it "foo" or whatever meaningless if it's important that we
still do not use numbers. I just want that the version corresponds to the
repository area, because I often get confused by running different Apache
versions on my development box.
Roy T. Fielding [Thu, 26 Aug 1999 17:58:01 +0000 (17:58 +0000)]
OS/2 EMX library's select() isn't thread safe so bypass it and go direct to
the OS/2 API call. Unfortunately this only works on socket handles which will
break probe_writable_fds() so I'll have to find a way to fix that too.
Roy T. Fielding [Thu, 26 Aug 1999 17:22:35 +0000 (17:22 +0000)]
Modifications to make mod_unique_id thread safe. This should work on Windows,
but no guarantees. I haven't verified it will always give a unique ID, but
the logic is good. I'll write some test cases to see if I can make it fail
later.
Roy T. Fielding [Thu, 26 Aug 1999 17:09:12 +0000 (17:09 +0000)]
Start to implement module-defined hooks that are a) fast and b) typesafe.
Replace pre_connection module call with a register_hook call and
implement pre_connection as a hook. The intent is that these hooks will
be extended to allow Apache to be multi-protocol, and also to allow the
calling order to be specified on a per-hook/per-module basis. [Ben Laurie]
Port a bunch of modules to the new module structure.
["Michael H. Voase" <mvoase@midcoast.com.au>]