Newer
Older
possible to compile some modules outside of the server.
[Ryan Bloom]
*) Fix the AliasMatch directive in Apache 2.0. When we brought a patch
forward from 1.3 to 2.0, we missed a single line, which broke regex
aliases. [Ryan Bloom]
*) We have a poor abstraction in the protocol. This is a temporary
hack to fix the bug, but it will need to be fixed for real. If
we find an error while sending out a custom error response, we back
up to the first non-OK request and send the data. Then, when we send
the EOS from finalize_request_protocol, we go to the last request,
to ensure that we aren't sending an EOS to a request that has already
received one. Because the data is sent on a different request than
the EOS, the error text never gets sent down the filter stack. This
fixes the problem by finding the last request, and sending the data
with that request. [Ryan Bloom]
*) Make the server status page show the correct restart time, and
thus the proper uptime. [Ryan Bloom]
*) Move the CGI creation logic from mod_include to mod_cgi(d). This
should reduce the amount of duplicate code that is required to
create CGI processes.
*) ap_new_connection() closes the socket and returns NULL if a socket
call fails. Usually this is due to a connection which has been
reset. [Jeff Trawick]
*) Move the Apache version information out of httpd.h and into release.h.
This is in preparation for the first tag with the new tag and release
system. [Ryan Bloom]
*) 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. [Bill Stoddard]
*) Make mod_status work with 2.0. This will work for prefork,
mpmt_pthread, and dexter. [Ryan Bloom]
*) Really fix mod_rewrite map lookups this time. [Tony Finch]
*) Get the correct IP address if ServerName isn't set and we can't
find a fully-qualified domain name at startup.
*) Make mod_cgid work with SuExec. [Ryan Bloom]
*) 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. [William Rowe]
*) 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]
*) Adopt apr features for simplifing mod_userdir, and accept the new
Win32/OS2 exceptions without hiccuping. [William Rowe]
*) 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 Fielding]
*) 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]
*) 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. [Greg Stein]
*) 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. [Ryan Bloom]
*) Change the Prefork MPM to use SIGWINCH instead of SIGUSR1 for graceful
restarts. [Ryan Bloom]
*) Modify the apr_stat/lstat/getfileinfo calls within apache to use
the most optimal APR_FINFO_wanted bits. This spares Win32 from
performing very expensive owner, group and permission lookups
and allows the server to function until these apr_finfo_t fields
are implemented under Win32. [William Rowe]
*) Support for typedsafe optional functions - that is functions exported by
optional modules, which, therefore, may or may not be present, depending
on configuration. See the experimental modules mod_optional_fn_{ex,im}port
for sample code. [Ben Laurie]
*) 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]
*) If we get an error, then we should remove all filters except for
those critical to serving a web page. This fixes a bug, where
error pages were going through the byterange filter, even though
that made no sense. [Ryan Bloom]
*) Relax the syntax checking of Host: headers in order to support
iDNS. PR#6635 [Tony Finch]
*) Cleanup the byterange filter to use the apr_brigade_partition
and apr_bucket_copy functions. This removes a lot of very messy
code, and hopefully makes this filter more stable.
[Ryan Bloom]
*) Remove AddModule and ClearModuleList directives. Both of these
directives were used to ensure that modules could be enabled
in the correct order. That requirement is now gone, because
we use hooks to ensure that modules are in the correct order.
[Ryan Bloom]
*) When SuExec is specified, we need to add it to the list of
targets to be built. If we don't, then any changes to the
configuration won't affect SuExec, unless 'make suexec' is
specifically run. [Ryan Bloom]
*) Cleaned out open_file from mod_file_cache, as apr now accepts
the APR_XTHREAD argument to open a file for consumption by
parallel threads on win32. [William Rowe]
*) Correct a bug in determining when we follow symlinks. The code
expected a stat -1 result, not an apr_status_t positive error.
Also check if the APR_FINFO_USER fields are valid before we
follow the link. [William Rowe]
*) Move initgroupgs, ap_uname2id and ap_gname2id from util.c to
mpm_common.c. These functions are only valid on some platforms,
so they should not be in the main-line code. [Ryan Bloom]
*) Remove ap_chdir_file(). This function is not thread-safe,
and nobody is currently using it. [Ryan Bloom]
*) Do not try to run make depend if there are no .c files in the
current directory, doing so makes `make depend` fail.
[Ryan Bloom]
*) Update highperformance.conf to work with either prefork or
pthreads mpms. [Greg Ames]
*) Stop checking to see if this is a pipelined request if we know
for a fact that it isn't. Basically, if r->connection->keepalive == 0.
This keeps us from making an extra read call when serving a 1.0
request. [Ryan Bloom and Greg Stein]
*) Fix the handling of variable expansion look-ahead in mod_rewrite,
i.e. syntax like %{LA-U:REMOTE_USER}, and also fix the parsing of
more complicated nested RewriteMap lookups. PR#7087 [Tony Finch]
*) Fix the RFC number mentioned when complaining about a missing
*) Fix an endless loop in ab which occurred when ab was posting
and the server dropped the connection unexpectedly.
[Jeff Trawick]
*) Fix a segfault while handling request bodies in ap_http_filter().
This problem has been seen with mod_dav usage as well as with
requests where the body was just being discarded. [Jeff Trawick]
*) Some adjustment on the handling and automatic setting (via
hints.m4) of various compilation flags (eg: CFLAGS). Also,
add the capability to specify flags (NOTEST_CFLAGS and
NOTEST_LDFLAGS) which are used to compile Apache, but
not used during the configuration process. Useful for
flags like "-Werror". [Jim Jagielski]
*) Stop using environment variables to force debug mode or
no detach. We now use the -D command line argument to
specify the correct mode. -DONE_PROCESS and -DNO_DETACH.
*) Change handlers to use hooks. [Ben Laurie]
*) Stop returning copies of filenames from both apr_file_t and
apr_dir_t. We pstrdup the filenames that we store in the
actual structures, so we don't need to pstrdup the strings again.
[Ryan Bloom]
*) mod_cgi: Fix some problems where the wrong error value was being
traced. [Jeff Trawick]
*) EBCDIC: Fix some missing ASCII conversion on some protocol data.
[Jeff Trawick]
*) Add generic hooks. [Ben Laurie]
*) Use a real pool to dup the error log descriptor. [Ryan Bloom]
*) Fix a segfault caused by mod_ext_filter when the external filter
program does not exist. [Jeff Trawick]
*) Fix an output truncation error when on an HTTP >= 1.0 request an
object of size between DEFAULT_BUCKET_SIZE and AP_MIN_BYTES_TO_WRITE
was served through mod_charset_lite (or anything else that would
create a transient bucket in this size range). ap_bucket_make_heap()
silently failed (fixed), transient_setaside() discovered it, but
ap_save_brigade() ignored it (fixed). [Jeff Trawick]
*) Ignore \r\n or \n when using PEEK mode for input filters. The problem
is that some browsers send extra lines at the end of POST requests, and
we don't want to delay sending data back to the user just because the
browser isn't well behaved. [Ryan Bloom]
*) Get SuEXEC working again. We can't send absolute paths to suExec
because it refuses to execute those programs. SuEXEC also wasn't
always recognizing configuration changes made using the autoconf
setup. [Ryan Bloom]
*) Allow the buildconf process to find the config.m4 files in the correct
order. Basically, we can now name config.m4 files as config\d\d.m4,
and we will sort them correctly when inserting them into the build
process. [Ryan Bloom]
*) Get mod_cgid to use apr calls for creating the actual CGI process.
This also allows mod_cgid to use ap_os_create_priviledged_process,
thus allowing for SuExec execution from mod_cgid. Currently, we do
not support everything that standard SuExec supports, but at least
it works minimally now. [Ryan Bloom]
*) Allow SuExec to be configured from the ./configure command line.
[Ryan Bloom]
*) Update some of the docs in README and INSTALL to reflect some of
the changes in Apache 2.0 [Cliff Woolley <cliffwoolley yahoo.com>]
*) If we get EAGAIN returned from the call to apr_sendfile, then we
need to call sendfile again. This gets us serving large files
such as apache_2.0a9.tar.gz on FreeBSD again. [Ryan Bloom]
*) Get the support programs building cleanly again.
*) The Apache/Win32 Apache.exe and dll's now live in bin. The
current directory logic now backs up over bin/ to determine the
server root from the Apache.exe path.
*) Apache/Win32 now follows the standard conventions of mod_foo.so
loadable modules, dynamic libs are all named libfoo.dll, and the
makefile.win populates the include, lib and libexec directories.
*) Apache is now IPv6-capable. On systems where APR supports IPv6,
Apache gets IPv6 listening sockets by default. Additionally, the
Listen, NameVirtualHost, and <VirtualHost> directives support IPv6
numeric address strings (e.g., "Listen [fe80::1]:8080").
[Jeff Trawick]
*) Modify the install directory layout. Modules are now installed in
modules/. Shared libraries should be installed in libraries/, but
we don't have any of those on Unix yet. All install directories
are modifyable at configure time. [Ryan Bloom]
*) Install all header files in the same directory on Unix. [Ryan Bloom]
*) Get the functions in server/linked into the server, regardless of
which modules linked into the server. This uses the same hack
for Apache that we use for APR and apr-util to ensure all of the
necessary functions are linked. As a part of thise, the CHARSET_EBCDIC
was renamed to AP_CHARSET_EBCDIC for namespace protection, and to make
the scripts a bit easier.
[Ryan Bloom]
*) Rework the RFC1413 handling to make it thread-safe, use a timeout
on the query, and remove IPv4 dependencies. [Jeff Trawick]
*) Get all of the auth modules to the point that they will install and
be loadable into the server. Our new build/install mechanism expects
that all modules will have a common name format. The auth modules
didn't use that format, so we didn't install them properly.
[Ryan Bloom]
*) API routines ap_pgethostbyname() and ap_pduphostent() are no longer
available. Use apr_getaddrinfo() instead. [Jeff Trawick]
*) Get "NameVirtualHost *" working in 2.0. [Ryan Bloom]
*) Return HTTP_RANGE_NOT_SATISFIABLE if the every range requested starts
after the end of the response. [Ryan Bloom]
*) Get byterange requests working with responses that do not have a
content-length. Because of the way byterange requests work, we have to
have all of the data before we can actually do the byterange, so we
can compute the content-length in the byterange filter.
[Ryan Bloom]
*) Get exe CGI's working again on Windows.
[Allan Edwards]
*) Get mod_cgid and mod_rewrite to work as DSOs by changing the way
they keep track of whether or not their post config hook has been
called before. Instead of a static variable (which is replaced when
the DSO is loaded a second time), use userdata in the process pool.
[Jeff Trawick]
Changes with Apache 2.0a9
*) Win32 now requires perl to complete the final install step for users
to build + install on Win32. Makefile.win now rewrites @@ServerRoot@
and installs the conf, htdocs and htdocs/manual directories.
[William Rowe]
*) Make mod_include use a hash table to associate directive tags with
functions. This allows modules to implement their own SSI tags easily.
The idea is simple enough, a module can insert it's own tag and function
combination into a hash table provided by mod_include. While mod_include
parses an SSI file, when it encounters a tag in the file, it does a
hash lookup to find the function that implements that tag, and passes
all of the relevant data to the function. That function is then
responsible for processing the tag and handing the remaining data back
to mod_include for further processing.
*) Get rid of ap_new_apr_connection(). ap_new_connection() now has
fewer parameters: the local and remote socket addresses were removed
from the parameter list because all required information is available
via the APR socket. [Jeff Trawick]
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
*) Distribution directory structure reorganized to reflect a
normal source distribution with external install targets.
[Roy Fielding]
*) The MPMs that need multiple segments of shared memory now create
two apr_shmem_t variables, one for each shared memory allocation.
the problem is that we can't determine how much memory will be required
for shared memory allocations once we try to allocate more than one
variable. The MM code automatically aligns the shared memory allocations,
so we end up needing to pad the amount of shared memory we want based
on how many variables will be allocated out of the shared memory segment.
It is just easier to create a second apr_shmem_t variable, and two
shmem memory blocks.
[Ryan Bloom]
*) Cleanup the export list a bit. This creates a single unified list of
functions exported by APR. The export list is generated at configure
time, and that list is then used to generate the exports.c file.
Because of the way the export list is generated, we only export those
functions that are valid on the platform we are building on.
[Ryan Bloom]
*) Enable logging the cookie with mod_log_config
*) Fix a segfault in mod_info when it reaches the end of the configuration.
[Jeff Trawick]
*) Added lib/aputil/ as a placeholder for utility functions which are not
specific to the Apache HTTP Server (but do not make sense with APR).
The first utility is "apu_dbm": a set of functions to work with DBM
files. This first version can be compiled for SDBM or GDBM databases.
[Greg Stein]
*) Complete re-write of mod_include. This makes mod_include a filter that
uses buckets directly. This has now served the FAQ correctly.
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
*) Allow modules to specify the first filter in a sub_request when
making the sub_request. This keeps modules from having to change the
output_filter immediately after creating the sub-request, and therefore
skip the sub_req_output_filter. [Ryan Bloom]
*) Update ab to accept URLs with IPv6 literal address strings (in the
format described in RFC 2732), and to build Host header fields in
the same format. This allows IPv6 literal address strings to be
used with ab. This support has been tested against Apache 1.3 with
the KAME patch, but Apache 2.0 does not yet work with this format
of the Host header field. [Jeff Trawick]
*) Accomodate an out-of-space condition in the piped logs and the
rotatelogs.c code, and no longer churn log processes for this
condition. [Victor J. Orlikowski]
*) Add support for partial writes with apr_sendfile() to core_output_filter.
[Greg Ames]
Changes with Apache 2.0a8
*) Add a directive to mod_mime so that filters can be associated with
a given mime-type.
[Ryan Bloom]
*) Get multi-views working again. We were setting the path_info
field incorrectly if we couldn't find the specified file.
[Ryan Bloom]
*) Fix 304 processing. The core should never try to send the headers
down the filter stack. Always, just setup the table in the request
record, and let the header filter convert it to data that is ready
for the network.
[Ryan Bloom]
*) More fixes for the proxy. There are still bugs in the proxy code,
but this has now proxied www.yahoo.com and www.ntrnet.net (my ISP)
successfully.
[Ryan Bloom]
*) Fix params for apr_getaddrinfo() call in connect proxy handler.
[Chuck Murcko]
*) APR: Add new apr_getopt_long function to handle long options.
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
*) APR: Change apr_connect() to take apr_sockaddr_t instead of hostname.
Add generic apr_create_socket(). Add apr_getaddrinfo() for doing
hostname resolution/address string parsing and building
apr_sockaddr_t. Add apr_get_sockaddr() for getting the address
of one of the apr_sockaddr_t structures for a socket. Change
apr_bind() to take apr_sockaddr_t. [David Reid and Jeff Trawick]
*) Remove the BUFF from the HTTP proxy. This is still a bit ugly, but
I have proxied pages with it, cleanup will commence soon.
[Ryan Bloom]
*) Make the proxy work with filters. This isn't perfect, because we
aren't dealing with the headers properly. [Ryan Bloom]
*) Do not send a content-length iff the C-L is 0 and this is a head
request. [Ryan Bloom]
*) Make cgi-bin work as a regular directory when using mod_vhost_alias
with no VirtualScriptAlias directives. PR#6829 [Tony Finch]
*) Remove BUFF from the PROXY connect handling. [Ryan Bloom]
*) Get the default_handler to stop trying to deal with HEAD requests.
The idea is to let the content-length filter compute the C-L before
we try to send the data. If we can get the C-L correctly, then we
should send it in the HEAD response.
[Ryan Bloom]
*) The Header filter can now determine if a body should be sent based
on r->header_only. The general idea of this is that if we delay
deciding to send the body, then we might be able to compute the
content-length correctly, which will help caching proxies to cache
our data better. Any handler that doesn't want to try to compute
the content-length can just send an EOS bucket without data and
everything will just work.
[Ryan Bloom]
*) Add the referer to the error log if one is available.
*) Mod_info.c has now been ported to Apache 2.0. As a part of this
change, the root of the configuration tree has been exposed to modules
as ap_conftree.
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
*) Get the core_output_filter to use the bucket interface directly.
This keeps us from calling the content-length filter multiple times
for a simple static request.
[Ryan Bloom]
*) We are sending the content-type correctly now.
[Ryan Bloom and Will Rowe]
*) APR on FreeBSD: Fix a bug in apr_sendfile() which caused us to report
a bogus bytes-sent value when the only thing being sent was trailers
and writev() returned an error (or EAGAIN). [Jeff Trawick]
*) Get SINGLE_LISTEN_UNSERIALIZED_ACCEPT working again. This uses the
hints file to determine which platforms define
SINGLE_LISTEN_UNSERIALIZED_ACCEPT.
[Ryan Bloom]
*) APR: add apr_get_home_directory() [Jeff Trawick]
*) Initial import of 1.3-current mod_proxy. [Chuck Murcko]
*) Not all platforms have INADDR_NONE defined by default. Apache
used to make this check and define INADDR_NONE if appropriate,
but APR needs the check too, and I suspect other applications will
as well. APR now defines APR_INADDR_NONE, which is always a valid
value on all platforms.
[Branko Čibej <brane xbc.nu>]
*) Destroy the pthread mutex in lock_intra_cleanup() for PR#6824.
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
*) Relax the syntax checking of Host: headers in order to support
iDNS. PR#6635 [Tony Finch]
*) When reading from file buckets we convert to an MMAP if it makes
sense. This also simplifies the default handler because the
default handler no longer needs to try to create MMAPs.
[Ryan Bloom]
*) BUFF has been removed from the main server. The BUFF code will remain
in the code until it has been purged from the proxy module as well.
[Ryan Bloom]
*) Byteranges have been completely re-written to be a filter. This
has been tested, and I believe it is working correctly, but it could
doesn't work for the Adobe Acrobat plug-in. The output almost matches
the output from 1.3, the only difference being that 1.3 includes
a content-length in the response, and this does not.
[Ryan Bloom]
*) APR read/write functions and bucket read functions now operate
on unsigned integers, instead of signed ones. It doesn't make
any sense to use signed ints, because we return the error codes,
so if we have an error we should report 0 bytes read or written.
[Ryan Bloom]
*) Always compute the content length, whether it is sent or not.
The reason for this, is that it allows us to correctly report
the bytes_sent when logging the request. This also simplifies
content-length filter a bit, and fixes the actual byte-reporing
code in mod_log_config.c
[Ryan Bloom]
*) Remove AP_END_OF_BRIGADE definition. This does not signify what
it says, because it was only used by EOS and FLUSH buckets. Since
neither of those are required at the end of a brigade, this was
really signifying FLUSH_THE_DATA, but that can be determined better
by checking AP_BUCKET_IS_EOS() or AP_BUCKET_IS_FLUSH. EOS and FLUSH
buckets now return a length of 0, which is actually the amount of data
read, so they make more sense.
[Ryan Bloom]
*) Allow the core_output_filter to save some data past the end of a
request. If we get an EOS bucket, we only send the data if it
makes sense to send it. This allows us to pipeline request
responses. As a part of this, we also need to allocate mmap
buckets out of the connection pool, not the request pool. This
allows the mmap to outlive the request.
[Ryan Bloom]
*) Make blocking and non-blocking bucket reads work correctly for
sockets and pipes. These are the only bucket types that should
have non-blocking reads, because the other bucket types should
ALWAYS be able to return something immediately.
[Ryan Bloom]
*) In the Apache/Win32 console window, accept Ctrl+C to stop the
server, but use Ctrl+Break to initiate a graceful restart
instead of duplicating behavior. [John Sterling]
*) Patch mod_autoindex to set the Last-Modified header based on
the directory's mtime, and add the ETag header. [William Rowe]
*) Merge the 1.3 patch to add support for logging query string in
such a way that "%m %U%q %H" is the same as "%r".
[Bill Stoddard]
*) Port three log methods from mod_log_config 1.3 to 2.0:
CLF compliant '-' byte count, method and protocol.
[Bill Stoddard]
*) Add a new LogFormat directive, %c, that will log connection
status at the end of the response as follows:
'X' - connection aborted before the response completed.
'+' - connection may be kept-alive by the server.
'-' - connection will be closed by the server.
[Bill Stoddard]
*) Expand APR for WinNT to fully accept and return utf-8 encoded
Unicode file names and paths for Win32, and tag the Content-Type
from mod_autoindex to reflect that charset if the feature
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
macro APR_HAS_UNICODE_FS is true. [William Rowe]
*) Compute the content length (and add appropriate header field) for
the response when no content length is available and we can't use
chunked encoding. [Jeff Trawick]
*) Changed ap_discard_request_body() to use REQUEST_CHUNKED_DECHUNK,
so that content input filters get dechunked data when using
the default handler. Also removed REQUEST_CHUNKED_PASS.
[Sascha Schumann]
*) Add mod_ext_filter as an experimental module. This module allows
the administrator to use external programs as filters. Currently,
only filtering of output is supported. [Jeff Trawick]
*) Most Apache functions work on EBCDIC machines again, as protocol
data is now translated (again). [Jeff Trawick]
*) Introduce ap_xlate_proto_{to|from}_ascii() to clean up some of
the EBCDIC support. They are noops on ASCII machines, so this
type of translation doesn't have to be surrounded by #ifdef
CHARSET_EBCDIC. [Jeff Trawick]
*) Fix mod_include. tag commands work again, and the server will
send the FAQ again. This also allows mod_include to set aside
buckets that include partial buckets.
[Ryan Bloom and David Reid]
*) Add suexec support back. [Manoj Kasichainula]
*) Lingering close now uses the socket directly instead of using
BUFF. This has been tested, but since all we can tell is that it
doesn't fail, this needs to be really hacked on.
[Ryan Bloom]
*) Allow filters to modify headers and have those headers be sent to
the client. The idea is that we have an http_header filter that
actually sends the headers to the network. This removes the need
for the BUFF to send headers.
[Ryan Bloom]
*) Charset translation: mod_charset_lite handles translation of
request bodies. Get rid of the xlate version of ap_md5_digest()
since we don't compute digests of filtered (e.g., translated)
response bodies this way anymore. (Note that we don't do it at
all at the present; somebody needs to write a filter to do so.)
[Jeff Trawick]
*) Input filters and ap_get_brigade() now have a input mode parameter
(blocking, non-blocking, peek) instead of a length parameter.
[hackathon]
*) Update the mime.types file to the registered media types as
Tony Finch]
*) Namespace protect some macros declared in ap_config.h
[Ryan Bloom]
*) Support HTTP header line folding with input filtering.
[Greg Ames]
*) Mod_include works again. This should still be re-written, but at
least now we can serve an SHTML page again.
[Ryan Bloom]
*) Begin to remove BUFF from the core. Currently, we keep a pointer
to both the BUFF and the socket in the conn_rec. Functions that
want to use the BUFF can, functions that want to use the socket,
can. They point to the same place.
[Ryan Bloom]
*) apr_psprintf doesn't understand %lld as a format. Make it %ld.
[Tomas Ögren <stric ing.umu.se>]
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
*) APR pipes on Unix and Win32 are now cleaned up automatically when the
associated pool goes away. (APR pipes on OS/2 were already had this
logic.) This resolvs a fatal file descriptor leak with CGIs.
[Jeff Trawick]
*) The final line of the config file was not being read if there was
no \n at the end of it. This was caused by apr_fgets returning
APR_EOF even though we had read valid data. This is solved by
making cfg_getline check the buff that was returned from apr_fgets.
If apr_fgets return APR_EOF, but there was data in the buf, then we
return the buf, otherwise we return NULL.
[Ryan Bloom]
*) Piped logs work again in the 2.0 series.
[Ryan Bloom]
*) Restore functionality broken by the mod_rewrite security fix:
rewrite map lookup keys and default values are now expanded
so that the lookup can depend on the requested URI etc.
PR #6671 [Tony Finch]
*) SECURITY: Tighten up the syntax checking of Host: headers to fix a
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
security bug in some mass virtual hosting configurations
that can allow a remote attacker to retrieve some files
on the system that should be inaccessible. [Tony Finch]
*) Add a pool bucket type. This bucket is used for data allocated out
of a pool. If the pool is cleaned before the bucket is destroyed, then
the data is converted to a heap bucket, allowing it to survive the
death of the pool.
[Ryan Bloom]
*) Add a flush bucket. This allows modules to signal that the filters
should all flush whatever data they currently have. There is no way
to actually force them to do this, so if a filter ignores this bucket,
that's life, but at least we can try with this.
[Ryan Bloom]
*) Add an output filter for sub-requests. This filter just strips the
EOS bucket so that we don't confuse the main request's core output
filter by sending multiple EOS buckets. This change also makes sub
requests start to send EOS buckets when they are finished.
[Ryan Bloom]
*) Make ap_bucket_(read|destroy|split|setaside) into macros. Also
makes ap_bucket_destroy a return void, which is okay because it
used to always return APR_SUCCESS, and nobody ever checked its
return value anyway.
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
*) Remove the index into the bucket-type table from the buckets
structure. This has now been replaced with a pointer to the
bucket_type. Also add some macros to test the bucket-type.
[Ryan Bloom]
*) Renamed all MODULE_EXPORT symbols to AP_MODULE_DECLARE and all symbols
for CORE_EXPORT to AP_CORE_DECLARE (namespace protecting the wrapper)
and retitled API_EXPORT as AP_DECLARE and APR_EXPORT as APR_DECLARE.
All _VAR_ flavors changes to _DATA to be absolutely clear.
[William Rowe]
*) Add support for /, //, //servername and //server/sharename
parsing of <Directory> blocks under Win32 and OS2.
[Tim Costello, William Rowe, Brian Harvard]
*) Remove the function pointers from the ap_bucket type. They have been
replaced with a global table. Modules are allowed to register bucket
types and use then use those buckets.
[Ryan Bloom]
*) mod_cgid: In the handler, shut down the Unix socket (only for write)
once we finish writing the request body to the cgi child process;
otherwise, the client doesn't hit EOF on stdin. Small request bodies
worked without this change (for reasons I don't understand), but large
ones didn't. [Jeff Trawick]
*) Remove file bucket specific information from the ap_bucket type.
This has been moved to a file_bucket specific type that hangs off
the data pointer in the ap_bucket type.
[Ryan Bloom]
*) Input filtering now has a third argument. This is the amount of data
to read from lower filters. This argument can be -1, 0, or a positive
number. -1 means give me all the data you have, I'll deal with it and
let you know if I need more. 0 means give me one line and one line
only. A positive number means I want no more than this much data.
Currently, only 0 and a positive number are implemented. This allows
us to remove the remaining field from the conn_rec structure, which
has also been done.
[Ryan Bloom]
*) Big cleanup of the input filtering. The goal is that http_filter
understands two conditions, headers and body. It knows where it is
based on c->remaining. If c->remaining is 0, then we are in headers,
and http_filter returns a line at a time. If it is not 0, then we are
in body, and http_filter returns raw data, but only up to c->remaining
bytes. It can return less, but never more.
[Greg Ames, Ryan Bloom, Jeff Trawick]
*) mod_cgi: Write all of the request body to the child, not just what
the kernel would accept on the first write. [Jeff Trawick]
*) Back out the change that moved the brigade from the core_output_filters
ctx to the conn_rec. Since all requests over a given connection
go through the same core_output_filter, the ctx pointer has the
correct lifetime.
[Ryan Bloom]
*) Fix another bug in the send_the_file() read/write loop. A partial
send by apr_send would cause unsent data in the read buffer to
get clobbered. Complete making send_the_file handle partial
writes to the network.
[Bill Stoddard]
*) Fix a couple of type fixes to allow compilation on AIX again
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
*) Fix bug in send_the_file() which causes offset to be ignored
if there are no headers to send.
[Bill Stoddard]
*) Handle APR_ENOTIMPL returned from apr_sendfile in the core
filter. Useful for supporting Windows 9* with a binary
compiled on Windows NT.
[Bill Stoddard]
Changes with Apache 2.0a7
*) Reimplement core_output_filter to buffer/save bucket brigades
across multiple calls to the core_filter. The brigade will be
sent when either MIN_BYTES_TO_SEND or MAX_IOVEC_TO_WRITE
thresholds are hit or the EOS bucket is received.
[Bill Stoddard]
*) Create experimental filter (buffer_filter) that coalesces bytes
into one large buffer before invoking the next filter in the
chain. This filter is particularly useful with the current
implementation of mod_autoindex when it inserted above the
chunk_filter. mod_autoindex generates a lot of brigades that
containing buckets holding just a few bytes each. The
buffer_filter coalesces these buckets into a single large bucket.
[Bill Stoddard]
*) Add apr_sendfile() support into the core_output_filter.
[Bill Stoddard]
*) Add apr_sendv() support into the core_output_filter.
[Bill Stoddard]
*) Fix mod_log_config so that it compiles cleanly with BUFFERED_LOGS
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
*) Remove ap_send_fb. This is no longer used in Apache, and it doesn't
make much sense, because Apache uses buckets instead of BUFFs now.
[Ryan Bloom]
*) send_the_file now falls back to a read/write loop on platforms that
do not have sendfile.
[Ryan Bloom and Brian Havard]
*) Install apachectl correctly, and substitute the proper values so
that it works again. [Ryan Bloom]
*) Better(??) handle platforms that lack sendfile().
[Jim Jagielski]
*) APR now has UUID generation/formatting/parsing support.
[Greg Stein]
*) Begin the http_filter. This is an input filter that understands
the absolute basic amount required to parse an HTTP Request. The
goal is to be able to split headers from request body before passing
the data back to the other filters.
[Ryan Bloom]
*) Bring forward from 1.3.13 the config directory implementation
[Jim Jagielski]
*) install apxs if it is created
[Ryan Bloom]
*) Added APR_IS_STATUS_condition test macros to eliminate canonical error
conversions. [William Rowe]
*) Now that we have ap_add_input_filter(), rename ap_add_filter() to
ap_add_output_filter(). [Jeff Trawick]
*) Multiple build and configuration fixes
Build process:
-add datadir and localstatedir substitutions
-fix layout name
-fix logfilename misspelling
-fix evaluation of installation dir variables and
-replace $foobar by $(foobar) to be usefull in the makefile
Cross compile:
-add rules for cross-compiling in rules.mk. Okay, rule to check for
$CC_FOR_BUILD is still missing
-use CHECK_TOOL instead of CHECK_PROG for ranlib
-add missing "AR=@AR@" to severaly Makefile.in's
-cache result for "struct rlimit"
-compile all helper programs with native and cross compiler
and use the native version to generate header file
[Rüdiger Kuhlmann <Tadu gmx.de>]
*) Prepare our autoconf setup for autoconf 2.14a and for cross-
compiling.
[Rüdiger Kuhlmann <Tadu gmx.de>]
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
*) Fix a bug where a client which only sends \n to delimit header
lines (netcat) gets a strange looking HTTP_NOT_IMPLEMENTED
message. Start working on ebcdic co-existance with input
filtering.
[William Rowe, Greg Ames]
*) If mod_so is enabled in the server always create libexec, even
if there are no modules installed in this directory. This is a
requirement for APXS to work correctly.
[Ryan Bloom]
*) Connection oriented output filters are now stored in the
conn_rec instead of the request_rec. This allows us to add the
output filter in the pre-connection phase instead of the
post_read_request phase, which keeps us from trying to write an
error page before we have a filter to write to the network.
[Ryan Bloom, Jeff Trawick, and Greg Ames]
*) Cleaning up an mmap bucket no longer deletes the mmap. An
mmap can be used across multiple buckets (default_handler with
byte ranges, mod_file_cache, mod_mmap_static), so cleanup of
the mmap itself can't be associated with the bucket.
[Jeff Trawick]
*) Add .dll caching directive ISAPICacheFile to mod_isapi.
[William Rowe]
*) Radical surgery to improve mod_isapi support under Win32.
Includes a number of newer ServerSupportFunction calls, support
for ReadClient (in order to retrieve POSTs greater than 48KB),
and general bug fixes to more reliably load ISAPI .dll's and
prevent leaking handle resources. Note: There are still
discrepancies between IIS's and Apache's ServerVariables, and
async calls are still not supported. Additional warnings are
logged to facilitate debugging of unsupported ISAPI calls.
[William Rowe]
*) Add input filtering to Apache. The basic idea for the input
filters is the same as the ideas for output filters. The biggest
difference is that instead of calling ap_pass_brigade, ap_get_brigade
should be called, and the order of execution for the filter itself is
different. When writing an output filter, a brigade is passed in,
and filters operate directly on that brigade, when done, they call
ap_pass_brigade. Input filters are the exact opposite. Because input
is not a push operation, filters first call ap_get_brigade. When this
function returns, the input filter will be left with a valid brigade.
The input filter should then operate on the brigade, and return.
[Ryan Bloom]
*) Fix building on BSD/OS using its native make. The build system
falls back to the BSD .include directive on that host platform.
[Sascha Schumann]
*) Expand dbmmanage to allow -d -m -s -p options for Crypt, MD5,
SHA1 and plaintext password encodings. Make feature tests a
bit more flexible. [William Rowe]
*) Charset translation: mod_charset_lite handles output content
translation in a filter. mod_charset_lite no longer ignores
subrequests. A bunch of cruft related to BUFF's support for
translating request and response bodies was removed.
[Jeff Trawick]
*) Move the addition of the CORE filter to the post_read_request
hook in http_core.c. This removes the need to add the filter in
multiple places and allows for an SSL module to be added much
simpler. [Ryan Bloom]
Fix a security problem that affects certain configurations of
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
mod_rewrite. If the result of a RewriteRule is a filename that
contains expansion specifiers, especially regexp backreferences
$0..$9 and %0..%9, then it may be possible for an attacker to
access any file on the web server. [Tony Finch]
*) Fix a bug where errors that are detected during early request parsing
don't produce visible HTTP error messages at the browser, because
the core_filter wasn't present. [Greg Ames]
*) Provide apr_socklen_t as a portability aid.
[Victor J. Orlikowski]
*) Overhaul of dbmmanage to allow a groups arg (as in Apache 1.2)
as well as a comment arg to the add, adduser and update cmds.
update allows the user to clear or preserve pw/groups/comment.
Fixed a bug in dbmmanage that prevented the check option from
parsing a password followed by :group... text. Corrected the
seed calcualation for Win32 systems, and added -lsdbm support.
[William Rowe]
*) Configured mod_auth_dbm to compile with sdbmlib under Win32.
[William Rowe]
*) Avoid a segfault when parsing .htaccess files. An
uninitialized tree pointer was passed to ap_build_config().
[Jeff Trawick]
*) Change the way that inet_addr & inet_network are checked for
in APR's configure process to allow BeOS BONE to correctly
find them. With this change BeOS BONE now builds from source
with no problems. [David Reid]
*) Fix a bug in apr_create_process() for Unix. The NULL signifying
the end of the parameters to execve() was stored in the wrong
location, overlaying the storage beyond the newargs[] array and
also passing uninitialized storage to execve(), which would
sometimes fail with EFAULT. [Jeff Trawick]
*) Fix a bug parsing configuration file containers. With a sequence
like this in the config file
<IfModule mod_kilroy.c>
any stuff
</IfModule>
<IfModule mod_lovejoy.c>
(blank line)
any stuff
</IfModule>
the second container would be terminated at the blank line due to
sediment in the buffer from reading the prior </IfModule> and an
error message would be generated for the real </IfModule> for the
second container. Also due to this problem, any two characters
could be used for "</" in the close of a container.
[Jeff Trawick]
*) ap_add_filter prototype changed to remove the ctx pointer. The
pointer still remains in the filter structure, but it can not be
a part of the ap_add_filter prototype. The reason is that when
the core uses AddFilter to add a filter to the stack it doesn't
know how to allocate the ctx pointer, or even how much memory should
be allocated. The filters will have to be responsible for allocating
the ctx memory when they need it.
[Ryan Bloom]
*) Add an AddFilter directive. This directive takes a list of filters
that should be activated for the requested resource.
[Ryan Bloom]
*) apr_snprintf(): Get quad format strings working on OS/390 (and perhaps