Ryan Bloom [Tue, 25 Apr 2000 23:20:36 +0000 (23:20 +0000)]
If a developer uses --with-program-name=foo, the config files are renamed
to match the name of the executable. In this example, httpd.conf will be
renamed to foo.conf.
Jeff Trawick [Tue, 25 Apr 2000 23:19:15 +0000 (23:19 +0000)]
Port a 1.3 EBCDIC fix to 2.0:
This is a port of my 1.3 patch which allows error response strings to be
translated from ebcdic to ascii. This bug is triggered by trying to
access a non-existant .gif for example. The content type starts out
being image/gif but is switched by error processing to text/html.
Without this patch, ap_checkconv() is called too early (before the error
processing), so the ebcdic conversion flag gets turned off and the
eventual "404 Not Found" error response is sent to the browser still in
ebcdic. Not very pretty.
Bill Stoddard [Tue, 25 Apr 2000 23:15:46 +0000 (23:15 +0000)]
Tell APR to truncate the httpd.pid file if it exists. Fix a bug in the
Windows side of APR to correctly handle this flag. Also fix related bug
in ap_write.
Ryan Bloom [Tue, 25 Apr 2000 21:29:27 +0000 (21:29 +0000)]
Allow the Apache-2.0 executable name to be specified with the
--with-program-name command line argument to configure. This does not
change the name of the config files or anything else, yet.
Bill Stoddard [Mon, 24 Apr 2000 22:44:21 +0000 (22:44 +0000)]
Win32: First cut at new shutdown/restart logic. The key new feature here is
the use of CancelIo on the listen socket. Threads can only cancel
their own I/O. To enable use of this nifty feature, I needed to make
sure only one thread ever initiated async I/O. So, if the workers
detect that they need more completion contexts (async AcceptExes),
they set the maintenance_event, which directs the control thread to
do the work on behalf of the workers. Most of the other changes are
to support this end.
drop the "container" param from ap_walk_config(). callers should simply
pass the first child, rather than expecting the walker to do it.
remove the nasty "static" variable inside ap_walk_config(). it now walks the
tree provided with no worries about bumping up/down levels.
minor refactor between ap_walk_config() and ap_walk_config_sub() to clean up
some logic and clarify the code.
clean up cmd_parms: config_file is no longer valid; end_token is bogus;
add directive.
move configfile_t and functions from httpd.h to http_config.h
new signature for ap_build_config() (since config_file removed from cmd_parms)
add "data" to ap_directive_t for future use by modules. add filename.
syntax checking for section-close directives: a section-open must exist,
the section-close must be </FOO>, and the open/close must match.
the file as a whole must be properly balanced (issue errors for each
unmatched section-open).
</FOO> command_rec structures are obsolete. Remove from http_core.c.
do not store </FOO> directives in the config tree.
clean out section-close logic from http_core.c (and old, related comments)
<Limit> and <LimitExcept> must walk their children.
new mechanism in ap_check_cmd_context() for testing enclosure in a
Directory/Location/File: find_parent()
<IfModule> and <IfDefine> must pass cmd->context when walking the children
several places: we had a walk followed by ap_get_module_config(). that
assumed the walk would create a config that we could fetch, which is not
true -- it is possible that the children are all from other modules
(e.g. the <Files> section in httpd.conf-dist has no "core" directives).
using ap_set_config_vectors() ensures we get a structure, and it returns
it to us.
[ note: when we had </Directory> (and friends) in the tree, the config
would get created; removing the directive removed the config; this
was a bitch to track down :-) ]
handle error messages during building and processing of the configuration.
add missing return statements, wrap some lines, remove unused vars.
move syntax error reporting and exit(1) back to the right place (to be
fixed in a future pass; the exit() is inappropriate for parsing
.htaccess files).
Bill Stoddard [Sun, 23 Apr 2000 17:42:22 +0000 (17:42 +0000)]
First cut at a file handle cache. It serves on Windows and should work on
Unix systems that implement sendfile.
It is still very rough around the edges (compile warnings, does an unnecessary
stat, not completely Unix friendly, leftover mod_mmap_static code, etc.)
Jeff Trawick [Sun, 23 Apr 2000 13:22:08 +0000 (13:22 +0000)]
Fix some problems on systems where EAGAIN != EWOULDBLOCK (e.g., OS/390).
ap_canonical_errror() for Unix now maps EWOULDBLOCK to EAGAIN/APR_EAGAIN
when appropriate so that the changes here (as well as bjh's changes from a
few days ago) to call ap_canonical_error() before comparing with EWOULDBLOCK
will work on Unix as well.
Ryan Bloom [Sat, 22 Apr 2000 22:54:30 +0000 (22:54 +0000)]
Parse the config tree, instead of the config file. This is a first step there
are some big improvements to be made to this code, but this works now, and
it is a first step.
Bill Stoddard [Thu, 20 Apr 2000 19:28:08 +0000 (19:28 +0000)]
Revamp the Win32 make environment. Makefiles have been removed and
Apache.dsw created to bring together all the pieces. Create new file
os/win32/BaseAddr.ref to define module base addresses (to prevent
dll relocation at start-up).
Submitted by: William Rowe
Reviewed by: Bill Stoddard
Jeff Trawick [Thu, 20 Apr 2000 14:36:01 +0000 (14:36 +0000)]
[EBCDIC] Port Paul Gilmartin's CRLF patch from 1.3. This replaces most
of the \015, \012, and \015\012 constants with macros.
Submitted by: Greg Ames
Reviewed by: Jeff Trawick
Bill Stoddard [Wed, 19 Apr 2000 22:35:45 +0000 (22:35 +0000)]
Win32: More winnt MPM cleanup. Moved code to queue acceptex completion
contexts to after the worker thread pool is created. Sometime over that
last month or so, we checked something in that tanked performance about 15%.
Ryan Bloom [Mon, 17 Apr 2000 19:57:30 +0000 (19:57 +0000)]
Add a pool to dupfile. There is no reason that when we duplicate a file, we would want to use the same pool for the duplicated file as we used for
the original file. This should solve a problem we were having with
dieing quietly on startup, because we are no longer closing stderr in the
original process and then opening the config file as file descriptor 2.
The original problem report can be found in the message
<20000311232812.A1066@sanguine.linuxcare.com.au>
Bill Stoddard [Mon, 17 Apr 2000 13:56:41 +0000 (13:56 +0000)]
linkwin20.diffs Resolves:
1) Explicit /base: addresses by the following table...
Required sizes are for debug builds. It is assumed that
as we increase the size of aprlib, we will be trimming
the size of ApacheCore, and the 278A0000 base can move down.
2) Make APR consistent with the rest of the API and
not build septypes for debugging (in other words,
roll in the debug symbols as every other module does.)
If we decide we LIKE /pdbtype:septypes... then we
should be using them throughout.
3) Slide the current path specs into /libpath: options
so the library list is more ledgible.
4) Drop all the gui crud from the library list. Everything
listed is referenced, with the following exceptions:
*) don't do anything with msvcrtd/oldnames today.
*) aprlib and ApacheCore have the same list, since functions
may still be moving between them.
*) apache.exe looses networking (it doesn't), while it keeps
advapi, which I don't think it needs, but it could later.
*) add aprlib to ApacheModuleProxy, since it will need it.
*) hang mswsock whereever ws2_32 is invoked. I believe
the most special case was ApacheModuleProxy, which may
become entirely APR. But for today we hang onto both.
5) MAP, MAP, MAP, everything gets a map. I for one have an
untold number of installed OS's and boot mappings, and the
debugger isn't installed to all of them. We gotta be able
to track down those renegade GP faults. (What faults...
I know, it's clean, but I am overly cautious that way.)
6) Set the DEFAULT linkage to be this linkage. Because
"it's a vc thing" the defaults were not all that
useful as a starting point (take, for example, the
joke of linking to the OLE libraries).
Bill Stoddard [Mon, 17 Apr 2000 13:45:42 +0000 (13:45 +0000)]
Updates Makefile.win
1) offers a single execution list, regardless of the CTARGET.
Sans CTARGET, it builds the default (the .exe or .dll).
With CTARGET=CLEAN, it cleans back up.
2) To eliminate the _clean block needed to move the delete
generated headers out of that block. They now get wiped only
on a full NMAKE -f makefile.win clean
3) Also threw in the _installdll cleanup with the full
NMAKE -f makefile.win clean.
4) Added RECURSE=0, the REAL reason this patch is absolutely
necessary. As we start tweaking individual .dsp project files,
we will need to prevent the makefile.win from going nuts.
5) Added a commented-out logresolve make item.
Submitted by: William Rowe
Reviewed by: Bill Stoddard
Ryan Bloom [Sun, 16 Apr 2000 23:28:52 +0000 (23:28 +0000)]
Add back in logic to put the ending container directive in the tree. This
needs to be there until we have a validating tree. Without this, it is
possible for a config file to read:
<Ifmodule mod_foo.c>
some directive
</Limit>
and still be read correctly. When the tree building functions can validate
for us, this should be removed, and there is a comment that says so.
Bill Stoddard [Sat, 15 Apr 2000 19:05:13 +0000 (19:05 +0000)]
Here's my first stab at getting mod_auth_digest working under 2.0
quick change summary:
- moved the random byte generation into APR
This patch adds ap_generate_random_bytes()
- now uses ap_time_t
- compiles and runs on linux
- tested with amaya
still to do:
- test win32 (This will have to be someone with a windows box :-)
I think I did everything correctly. APR_HAS_RANDOM should be defined
on windows and there is a lib/apr/misc/win32/rand.c which is basically
a copy of what mod_auth_digest used to use.
- error handling cleanup
Since there is not currently a usable ap_strerror it is commented out.
win32 error handling is virtually non-existant. I just don't know enough
about win32 to touch this stuff.
Brian
Submitted by: Brian Martin
Reviewed by: Bill Stoddard (very quick review, moving in right direction)
Bill Stoddard [Sat, 15 Apr 2000 17:48:16 +0000 (17:48 +0000)]
Win32:
1. Move the space stripping of physical service names
fix up from Apache 1.3.
2. #include'ing "ap_mpm.h" fixes up an unresolved symbol.
3. Add dependency checking to the CreateService call to ensure TCPIP and
AFP (winsock) is started before Apache.
Submitted by: William Rowe
Reviewed by: Bill Stoddard
Ryan Bloom [Fri, 14 Apr 2000 23:36:12 +0000 (23:36 +0000)]
Add buffered I/O back into APR's file I/O on unix. This code comes from
the OS/2 code, and has been munged to make it compile. This has not been
tested, but unbuffered I/O still works.
Ryan Bloom [Fri, 14 Apr 2000 20:54:25 +0000 (20:54 +0000)]
apr_config.h is a private include file, and shouldn't be used by any
C files outside of APR. ap_signal has been moved to apr.h, so this
include is no longer needed.
Bill Stoddard [Fri, 14 Apr 2000 17:38:14 +0000 (17:38 +0000)]
Allow for the possibility of receiving data regardless of the pipe
error condition or receiving EOF on the pipe read. This patch
assumes that a read returning APR_SUCCESS with 0 bytes read is equivalent
to an EOF.
Submitted by: Dean Gaudet
Reviewed by: Bill Stoddard
Martin Kraemer [Thu, 13 Apr 2000 11:03:20 +0000 (11:03 +0000)]
On all the systems I could get hold of (Solaris, ReliantUNIX, BS2000, SINIX),
SHM_R was always 0400, never 0x400. My assumption is that is usually (always) is.
Feel free to change it to an OS test like this (if your OS differs):
case `uname -s` in
SunOS | POSIX-BC | SINIX-* | ReliantUNIX-* ) # BS2000
AC_DEFINE(SHM_R, 0400, [ ])
AC_DEFINE(SHM_W, 0200, [ ])
;;
*)
AC_DEFINE(SHM_R, 0x400, [ ])
AC_DEFINE(SHM_W, 0x200, [ ])
;;
esac
Ryan Bloom [Thu, 6 Apr 2000 23:53:59 +0000 (23:53 +0000)]
Make the server work without asking for buffered file I/O. This removes
all APR_BUFFERED flags from the server, and it fixes a minor bug in the
ungetchar patch (I forgot a file when comitting).
Bill Stoddard [Wed, 5 Apr 2000 21:37:59 +0000 (21:37 +0000)]
Start to clean up winnt.c a bit. Consolidate several calls to
CreateIoComplationPort into one and isolate it from the Win95/98
code path. Still much to do...
Bill Stoddard [Wed, 5 Apr 2000 17:27:57 +0000 (17:27 +0000)]
Patch to port mod_auth_db to the 2.0 api and also to support
Berlekey DB 3.0. It works for me with both Berkeley DB 3.0.55 and
2.7.7. It should work with version 1 as well but I haven't tested it.
Submitted by: Brian Martin <bmartin@penguincomputing.com>
Reviewed by: Bill Stoddard