Bill Stoddard [Fri, 2 Feb 2001 21:32:34 +0000 (21:32 +0000)]
Begin restructuring scoreboard code to enable adding back in
the ability to use IPC other than shared memory.
Get mod_status working on Windows again.
Still to do:
Rename some of the function APIs. Replace all calls to reinit_scoreboard with
ap_create_scoreboard. Add back in support for scoreboard files.
Bill Stoddard [Fri, 2 Feb 2001 19:28:06 +0000 (19:28 +0000)]
Should consider APRizing the entire module. For now, use HAVE_TIMES
to indicate if we have the necessary structures. This is part of getting
mod_status working on Windows
Ryan Bloom [Thu, 1 Feb 2001 21:55:16 +0000 (21:55 +0000)]
Bring mod_status for 2.0 back in line with mod_status for 1.3. This is
basically a straight port of the 1.3 module to 2.0. The MPMs need to be
modified a bit to work with mod_status, but prefork, mpmt_pthread, and
dexter have already been changed. I will fix perchild tonight. There
is a lot of common code that can be abstracted, and there seems to be a
small bug with regard to what mpmt_pthread and dexter report as current
connections. ExtendedStatus does work again, although until the bug
mentioned above is fixed, it isn't as useful on mpmt_pthread and dexter.
Next week, I will look at allowing other modules to add data to the
STATUS page and possibly to the scoreboard itself.
This file will go away. For this moment, the s/FindFirstFile/apr_stat/
fixes parsing of utf-8 resources against the NTFS filesystem. The only
remaining utf-8 change is to the config parser [which is simple - any
unicode config file (FFFE/FEFF lead word) will be utf-8 encrypted].
Tony Finch [Thu, 1 Feb 2001 09:59:25 +0000 (09:59 +0000)]
Get the correct IP address if ServerName isn't set and we can't
find a fully-qualified domain name at startup.
PR: 7170
Submitted by: Danek Duvall <dduvall@eng.sun.com>
Eliminate all assumptions that finfo.protection reflects the existance
or absense of a file. finfo.filetype is defined as 0 if APR_NOFILE,
or a non-zero value if the file could be apr_stat()'ed.
Bill Stoddard [Wed, 31 Jan 2001 20:01:16 +0000 (20:01 +0000)]
apr_stat() in http_request.c only needs size, type, mtime, ctime & atime values from
the file. Modify apr_stat() under windows to accomodate apr_stat( APR_FINFO_MIN)
Greg Ames [Mon, 29 Jan 2001 22:19:17 +0000 (22:19 +0000)]
back out recent breakage. If the lstat isn't executed, finfo isn't
initialized, and the code was looking at random garbage.
This gets the server a little closer to starting on apache.org. There's still
an issue with mod_include not resolving apr_get_username when it's dynamically
loaded.
Ryan Bloom [Mon, 29 Jan 2001 05:41:04 +0000 (05:41 +0000)]
Make mod_cgid work with SuExec. This has been tested and works reliably
on my machine, but since this is security related, this should be tested
and scrutinized by as many people as possible.
*) Adopt apr user/group name features for mod_rewrite. Eliminates some
'extra' stat's for user/group since they should never occur, and now
resolves the SCRIPT_USER and SCRIPT_GROUP, including on WinNT NTFS
volumes.
No-one commented on loosing the 'stat' calls, can anyone invent a scenario
where they could be required? Also, I don't like the casts either, so if
you have a better solution, don't whine, just fix it :)
*) Adopt apr features to simplify mod_includes. This changes the
behavior of the USER_NAME variable, unknown uid's are now reported
as USER_NAME="<unknown>" rather than the old user#000 result.
WinNT now resolves USER_NAME on NTFS volumes. [William Rowe]
** Also fixes yet another stat result, allowing APR_INCOMPLETE
Moved several CHANGES back to APR where they belonged in the first place,
Adopt apr features for simplifing mod_userdir, and accept the new
Win32/OS2 exceptions without hiccuping
Also note a potentially serious flaw - others please review.
Moving a small OS2'ism into APR, it's pw_dir excludes the username.
Return the expected result. Also noted the headers/os2errno changes
from early this morning.
Roy T. Fielding [Sun, 28 Jan 2001 07:41:15 +0000 (07:41 +0000)]
Replace configure --with-optim option by using and saving the
environment variable OPTIM instead. This is needed because configure
options do not support multiple flags separated by spaces.
Roy T. Fielding [Sun, 28 Jan 2001 06:46:23 +0000 (06:46 +0000)]
Force --with-optim and --with-port to have argument values, since
they result in later compile errors otherwise.
I would have removed --with-optim in favor of just setting it with
an environment variable, but then it wouldn't be saved in config.nice.
A better solution is needed because these arguments can only accept
a single value (quotes and spaces are stripped). Perhaps setting
OPTIM within config.nice? First things first.
Ryan Bloom [Sun, 28 Jan 2001 04:07:03 +0000 (04:07 +0000)]
Fix some byterange handling. If we get a byte range that looks like
"-999999" where that is past the end of the file, we should return
a PARTIAL CONTENT status code, and return the whole file as one big
byterange. This matches the 1.3 handling now. [Ryan Bloom]
Ryan Bloom [Sun, 28 Jan 2001 03:36:02 +0000 (03:36 +0000)]
Make the error bucket a real meta-data bucket. This means that the
bucket length is 0, and a read returns NULL data. If one of these
buckets is passed down after the headers are sent, this data will
just be ignored.
Submitted by: Greg Stein
Ryan Bloom [Sun, 28 Jan 2001 03:00:03 +0000 (03:00 +0000)]
The prefork MPM wasn't killing child processes correctly if a restart
signal was received while the process was serving a request. The child
process would become the equivalent of a second parent process. If
we break out of the accept loop, then we need to do die after cleaning
up after ourselves.
Joshua Slive [Sat, 27 Jan 2001 23:32:36 +0000 (23:32 +0000)]
- Remove documentation on command line options from invoking.html
since the man pages are now in the html docs.
- Move information on "starting the server" from install.html to
a more proper location "invoking.html"
- Add a few more details here and there.
Use the appropriate APR_FINFO_flags for the apr_stat/lstat/getfileinfo
calls to avoid ownership and permissions on Win32 when they are not
required, and until they are implemented.
Ryan Bloom [Sat, 27 Jan 2001 18:23:49 +0000 (18:23 +0000)]
Fix a seg fault. The problem is easy to explain. On a HEAD request, Good
handlers will send their data down the filter stack, but 1.3 handlers will
just return, giving us a Content-Length of 0. Since we can't send a C-L
of 0 just because it is a HEAD request, we search the headers_out table
for a 0 C-L if it is a HEAD request. The problem is that some filters
will not allow (includes_filter) a C-L to be computed, so we end up without
a C-L header in headers_out. Thus, when we do a strcmp against the header
value and "0", we seg fault, because the header value is NULL.
To fix this, we grab the element from the header table, and make sure it
isn't NULL before doing the strcmp.
Ryan Bloom [Sat, 27 Jan 2001 17:17:51 +0000 (17:17 +0000)]
Cleanup the error bucket code a bit. This uses the error bucket directly
instead of using ap_bucket_read. It also lets ap_die handle the fact that
the filter returned the error.
Submitted by: Greg Stein
Was there a file that wasn't updated with the error buckets patch?
Here's the export symbol for http_protocol's error bucket type, but
I can't find the actual instance (which needs AP_DECLARE_DATA as well.)
Ryan Bloom [Sat, 27 Jan 2001 07:13:39 +0000 (07:13 +0000)]
filters can now report an HTTP error to the server. This is done
by sending a brigade where the first bucket is an error_bucket.
This bucket is a simple bucket that stores an HTTP error and
a string. Currently the string is not used, but it may be needed
to output an error log. The http_header_filter will find this
bucket, and output the error text, and then return
AP_FILTER_ERROR, which informs the server that the error web page
has already been sent.
Ryan Bloom [Fri, 26 Jan 2001 17:54:06 +0000 (17:54 +0000)]
Stop using the request filters to filter an error response. This fixes a
bug where we were using the byterange filter to filter an error, which
caused us to close the connection before we had sent any data. Currently,
we only keep the three most important filters, but we may need to add more
in the future. I am mostly thinking of the charset translation filter.
Greg Stein [Fri, 26 Jan 2001 11:44:51 +0000 (11:44 +0000)]
Provide a way to allow get_resource and get_parent_resource to return errors
that might occur during the parsing of the URI and/or the lookup of the
resource in the repository.
Specifically: return a dav_error* and move the returned dav_resource* to an
"out" parameter of the hook function.
Greg Stein [Fri, 26 Jan 2001 09:05:40 +0000 (09:05 +0000)]
apr_put_os_file() expected the caller to have an existing file or init to
NULL. using an existing file doesn't normally work: where would you get a
blank file to shove an FD into? expecting the user to assign to NULL is
error-prone (mod_isapi didn't).
*) always create and return a new file from apr_put_os_file()
*) reimplement apr_open_stderr() in terms of apr_put_os_file()
[ except for win32... some issues there ]
*) remove some (obsolete) inits to NULL
Greg Ames [Thu, 25 Jan 2001 18:29:35 +0000 (18:29 +0000)]
add highperformance-std.conf . The -std name allows make install to work
its magic.
Slightly changed from highperformance.conf : I added "User" and "Group" so
it works right out of the box on Linux. Group will no doubt need editing on
other platforms.
I'll remove docs/conf/highperformance.conf from CVS once I find out the
right way to do it. (Hints appreciated)