Axe writev(2) support from the SSL I/O layer because in Apache 2.0 we no
longer handle the bottom line of I/O ourself. Additionally this again
simplifies mod_ssl's I/O part for later transition to mod_tls's approach
with buckets.
Axe most WIN32 stuff from Apache 1.3. In Apache 2.0 we either use APR
later for this or we don't do it at all. But we certainly no longer want
to see any platform specific things inside a module.
Axe out SSL_CONSERVATIVE stuff which for Apache 1.3 did I/O data
pre-sucking on POST requests and I/O re-injection in case of SSL
renegotiations. This all either cannot be solved any longer or at least
has to be implemented totally different through I/O layering/filtering.
Axe out SSL_USE_SDBM stuff, i.e., get rid of the local SDBM copy and use
APR's DBM API instead. The remaining question just is whether APR's DBM
allows "larger" things like SSL sessions to be stored...
Axe out the complete SSL_COMPAT stuff. Because Apache 2.0 is already
incompatible at many places to Apache 1.3 we also don't want this stuff
anymore. Apache 2.0's mod_ssl will be mostly compatibile with Apache
1.3's mod_ssl, of course. But we really no longer want to be compatible
to Sioux and other obsolete SSL things...
Start writing down incompatibilities to mod_ssl 2.x from Apache 1.3.
Our general goal is to axe down mod_ssl to a minimum, because what we
don't have anymore we don't have to port and as simpler mod_ssl becomes.
Nevertheless we will try to minimize incompatibilities if possible.
Axe out EAPI-based SSL_VENDOR stuff.
If we want this later again, we have to do it differently anyway. So,
for now we try to strip down mod_ssl as heavy as possible and hence we
kick out this stuff at all.
Finalize the build environment by integrating the last thing (the
lex/yacc stuff) into Makefile.in and getting rid of the old Apache 1.3
Makefile.tmpl file.
Greg Stein [Sat, 5 May 2001 11:18:01 +0000 (11:18 +0000)]
Fix a bug in the input handling. ap_http_filter() was modifying *readbytes
which corresponded to r->remaining (in ap_get_client_block). However,
ap_get_client_block was *also* adjusting r->remaining. Net result was that
PUT (and probably POST) was broken. (at least on large inputs)
To fix it, I simply removed the indirection on "readbytes" for input
filters. There is no reason for them to return data (the brigade length is
the return length). This also simplifies a number of calls where people
needed to do &zero just to pass zero.
I also added a number of comments about operations and where things could be
improved, or are (semi) broken.
Get rid of libssl.modules and libssl.version. libssl.version we
no longer need, because mod_ssl no longer has its own version.
libssl.modules is now more or less (except for the old custom Apache 1.3
configuration rules) replaced by the Autoconf based config.m4.
Allow mod_tls and mod_ssl coexists without interfering each other by
renaming the --with-ssl option of mod_tls to --with-tls. This way we can
use --enable-ssl/--with-ssl for mod_ssl and --enable-tls/--with-tls for
mod_tls.
Joshua Slive [Thu, 3 May 2001 22:33:41 +0000 (22:33 +0000)]
Conversion to XHTML.
The plan is to continue converting the rest of the docs to XHTML, so if you
have any objections, please voice them now on apache-docs.
Submitted by: James Sutherland <jas88@cam.ac.uk>
Reviewed by: Joshua Slive, William A. Rowe, Jr.
Ryan Bloom [Tue, 1 May 2001 21:59:26 +0000 (21:59 +0000)]
Fix the logic for saving data onto the heap before sending it. Basically,
we have to use nbytes+flen when figuring out how much data we have,
and when looking at the fact that we have a buffer to save aside before
sending it, we also need to look at the length, to ensure that we aren't
saving too much.
Submitted by: Bill Stoddard and Ryan Bloom
Greg Stein [Tue, 1 May 2001 18:43:09 +0000 (18:43 +0000)]
Add a comment about an assumption we make in our keepalive buffering.
Delay the check for "too many items in an iovec" until we actually try to
put something in there. This allows that N+1 bucket to be an EOS, FLUSH,
FILE, or zero-length bucket without triggering a split. Only if that next
bucket has iovec data will a split be made.
Jeff Trawick [Tue, 1 May 2001 11:17:07 +0000 (11:17 +0000)]
Initialize a local variable to prevent a gcc warning about
possible use before set. The code was fine but it is best
to keep gcc quiet lest we stop paying attention.
Ryan Bloom [Sun, 29 Apr 2001 17:05:49 +0000 (17:05 +0000)]
Create Files, and thus MMAPs, out of the request pool, not the
connection pool. This solves a small resource leak that had us
not closing files until a connection was closed. In order to do
this, at the end of the core_output_filter, we loop through the
brigade and convert any data we have into a single HEAP bucket
that we know will survive clearing the request_rec.
Submitted by: Ryan Bloom, Justin Erenkrantz <jerenkrantz@ebuilt.com>,
Cliff Woolley
Roy T. Fielding [Sun, 29 Apr 2001 05:24:11 +0000 (05:24 +0000)]
Completely revamp configure so that it preserves the standard make
variables CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS and LIBS by moving
the configure additions to EXTRA_* variables. Also, allow the user
to specify NOTEST_* values for all of the above, which eliminates the
need for THREAD_CPPFLAGS, THREAD_CFLAGS, and OPTIM. Fix the setting
of INCLUDES and EXTRA_INCLUDES. Check flags as they are added to
avoid pointless duplications. Fix the order in which flags are given
on the compile and link lines.
backing out this part of the recent apxs change
otherwise `apxs -q INCLUDEDIR' is broken using the default layout
PR:
Obtained from:
Submitted by:
Reviewed by:
Jeff Trawick [Fri, 27 Apr 2001 18:29:11 +0000 (18:29 +0000)]
Allow module names to be hyphenated in the --enable-mods-shared
argument. Previously, we passed through a user-specified hyphen into
the name of the shell variable, yielding an invalid variable name.
Martin Kraemer [Fri, 27 Apr 2001 15:16:41 +0000 (15:16 +0000)]
Prevent a core dump (openssl_state_machine.c is completely infected with
assert()s in place of sensible error handling) when a server-root-relative
certificate path is given (which is what most users are going to try first).
assertion "n > 0" failed: file "openssl_state_machine.c", line 142
That does NOT fix the openssl_state_machine.c though., So, never try to
use invalid certs, missing keys or other fancy "1st time user" stuff.
Martin Kraemer [Fri, 27 Apr 2001 08:41:01 +0000 (08:41 +0000)]
Search for OpenSSL in the "standard locations" .../include and .../lib
which are ubiquitous after openSSL's "make install". The old logic relied
on a common directory for both include files and libraries (very non-standard).
fast-path some cases, primarily to avoid an allocation when it isn't needed.
for a "nice" piece of cdata which is in one chunk, this can usually avoid an
allocation.
Fix a reference to "ctx" in mod_include's CREATE_ERROR_BUCKET macro
to "cntx", which is the actual name of the argument to that macro. It
accidentally worked before because all of the callers of the macro happen
to be passing in a variable named "ctx". If one of them were to ever try
to pass in a context named something else, bad things would happen.
Paul J. Reder [Wed, 25 Apr 2001 13:42:38 +0000 (13:42 +0000)]
This patch puts enough of the signal processing back in so that the signals
are all handled properly now. My previous patch fixed the deadlock race
condition, but broke the user directed signal handling. This fixes it to work
the it did before (primarily SIGTERM is now working).
Limit the threaded mpm to quiescing one process at a time.
This is to fix a problem where the scoreboard is filled with
quiescing processes and no working processes can start, triggered by
MaxRequestsPerChild. perform_idle_server_maintenance could theoretically
cause it as well.
Ryan Bloom [Sun, 22 Apr 2001 22:19:32 +0000 (22:19 +0000)]
At the hack-athon we decided to change the way that input filters
determine how much data is returned to the previous filter. Prior to this
change, we used a field in the conn_rec to determine how much to return.
After this change, we use an argument to ap_get_brigade. This makes it
much more obvious how things work at all levels, so that module authors
can easily determine how much data is supposed to be returned to them.
Revert about half of the last commit because of an oversight on my part
that broke it. Unfortunately, fixing the oversight "the right way" is
almost as ugly as the original code; it's easier to just go back to the way
it was, at least for now.
The problem is that the original code would delete buckets from foo through
bar in the brigade, and the patched code deletes *everything* up through
bar, which is bad. I could have fixed it by doing two splits, but that
introduces too many palloc's for my taste. It's also fixable with RING macros,
but I refuse to start using RING macros directly on brigades. The best
solution would be if there were a brigade equivalent to a RING_UNSPLICE/
RING_INSERT_HEAD sequence (this sequence is also used interally by
apr_brigade_split(), btw), something like this:
APR_BRIGADE_TRANSFER_BUCKETS(oldbrigade,newbrigade,startbucket,endbucket);
Absent that, the affected parts of the patch are hereby reverted (grumble,
grumble). If people liek the APR_BRIGADE_TRANSFER_BUCKETS() idea, I'll
implement that and repatch mod_include later.
Roy T. Fielding [Sat, 21 Apr 2001 12:23:37 +0000 (12:23 +0000)]
Revert the change that moved keepalives out of conn_rec. That variable
controls the number of requests per connection, regardless of the protocol
used by the request.
Change mod_include to use the latest bucket API tricks. This gets
rid of some obscure while loop magic that had to be done before,
making mod_include easier to read and a better example for future
filter writers.
There should be no semantic changes in this patch... just a 1-to-1
mapping from while loops to bucket API calls that do the same thing.