Bill Stoddard [Wed, 3 May 2000 16:28:04 +0000 (16:28 +0000)]
Win32: Fix some bugs in the restart logic. This is still rather adhoc. A more rigorous solution
is to maintain a list of overlapped io structures in the child_main control thread
and use HasOverLappedIoCompleted() to manage the connections and pending io.
We must resort to maintaining a list of pending io (i.e. overlapped structures) should
we ever begin using AcceptEx to receive data. Why? We need to be able to detect when
a connection is received but no data is being sent over that connection. There is a
Win32 function (whose name I forget at the moment) to handle this. Why can't Win32
just timeout the connection using setopt??? It would make life so much easier if AcceptEx
just returned TIMEOUT in this condition rather than requiring the application to
explicitly poll the socket to see if data is available.
Final .dsp changes to produce the lightest weight builds
without precompiled headers or source browse files under
Win32. Enabling these is straightforward, if that's what
the user desires. Also correct minor errors, and reset
some project defaults to their current config.
Significantly shorten the Win32 build and shrink symbol tables
for precompiled headers and debugging by eliminating large chunks
of the windows.h declarations, especially the graphical user
interface declarations.
Also eliminates redundant inclusion of winsock and windows headers.
As the GUI sections can be included by adding the windows.h include
prior to any apr headers, these includes now imply something
completely different.
* Makefile header is now completely dynamic
* Absolute paths everywhere
(fixes Tru64 support)
* Get rid of LTLIBRARY_SHARED_NAME rule in library.mk
(fixes Irix support, untested)
* VPATH does not contain variables anymore
(fixes UnixWare support)
* Remove inclusion of program.mk in support/Makefile.in
(PROGRAM_NAME is empty => breaks Irix and others)
* Call REENTRANCY_FLAGS earlier, so that flags are passed to header checks
(might fix OpenBSD pthread.h-detection, untested)
Sorry I missed one. I -really- believe now that ap.h can now be safely swept
out to the attic, but I will leave for someone in unix to test and confirm.
Jeff Trawick [Fri, 28 Apr 2000 18:25:02 +0000 (18:25 +0000)]
Win32:
install ab.exe
fix dependency in Apache.dsw (ab is dependent on aprlib and ap)
fix ab and htdigest projects so that they find all header files
define ap_signal() in apr.hw - this is o.k. for casual use as with
cmd-line programs
use API_VAR_EXPORT as appropriate in getopt.c
general:
ab doesn't need to declare ap_optarg/ap_optind; fix a warning
htdigest needs to call ap_initialize() to avoid segfault at
startup
Dependency sequences appear to overrule other .dsp project sequences.
Also stripped out some nonsense - dependency loops may have caused
some compiliations to always rebuild.
Following constructive advise of Ralf, and comments of JLW:
Consitify use of $(MAKE) directive, and add $(MAKEOPT) dependent
on make tool used. Clearly just a start twords bcc compatibility,
but hopefully a good one. In the process, we make the build just
a little less noisy.
Also a test to see if Manoj wrangled my cvs update mail list
access to broadcast correctly.
Brian Havard [Fri, 28 Apr 2000 06:15:53 +0000 (06:15 +0000)]
Remove unnecessary rules for .S files which clash with the rules for .s file
(which we probably also don't need) on case insensitive systems like OS/2.
#define str*casecmp as stricmp causes reinterpretation of
str*casecmp function declarations. This creates dozens of
compiler emits. Since there is no need, the HAVE_STRCASECMP
macros wipe out the redeclaration.
This is my second and last hack for the evening...
spent way to much time fighting the windoze cvs/ssh
learning curve! Sorry for the previous nonsense docs of
rev 1.22 - still fighting to use the editor for docs :-)
Jeff Trawick [Fri, 28 Apr 2000 02:35:40 +0000 (02:35 +0000)]
extremely minor cleanup:
apr_file_io.h: fix comment describing APR_OS_DEFAULT
sockets.c: use socklen_t instead of int to avoid compile
warning on systems with unsigned sock len parms
dexter/.cvsignore: ignore .deps, .libs
errorcodes.c: get rid of some unused vars
Ryan Bloom [Fri, 28 Apr 2000 00:02:30 +0000 (00:02 +0000)]
This stops Apache 2.0 from trying to compile the server when we run
make install. We never used to build the server when installing in
the 1.3 tree, so I'm going back to that behavior.
Jeff Trawick [Thu, 27 Apr 2000 20:11:34 +0000 (20:11 +0000)]
Repair ap_poll() on UNIX systems where APR's poll flags
have different values than the system's poll flags (i.e.,
call get_revents() to translate flags before returning to
the caller; otherwise, they are quite meaningless :) ).
Fix ab's usage of the new ap_poll() and repair some APR-ization
breakage (e.g., not setting port prior to ap_connect()).
Uninteresting changes:
Change toascii to to_ascii in ab.c to avoid a conflict with MSVC++'s
toascii() (I enabled the NOT_ASCII logic in ab on Win32 recently to
verify that ap_xlate_X() returned the correct error codes and got
warnings on toascii.
get_revent() was reformatted unintentionally. Sorry.
Ryan Bloom [Thu, 27 Apr 2000 05:56:41 +0000 (05:56 +0000)]
I have merged the two ab files together, the one from src/support and
src/lib/apr/test. This means that the ab program in the support
directory is now portable using APR. This has only gone through the
barest of testing, and needs to be tested much better.
Bill Stoddard [Wed, 26 Apr 2000 20:02:11 +0000 (20:02 +0000)]
Some windows tweaks to the default configuration, including providing
a default ServerName of 127.0.0.1, including the new auth digest and
file cache module LoadModuleDirectives, et. al.
Jeff Trawick [Wed, 26 Apr 2000 14:54:57 +0000 (14:54 +0000)]
Increase the default NumSIG value from 32 to 33 on behalf of
OS/390. unix_siglist_init() will now blow up via ap_assert()
if NumSIG is too low. (This is no fun to debug!)
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.