/** @page CHANGES
@section v2_03_dev Changes with libapreq2-2.03-dev (released June 12, 2004)
- C API [joes]
"Objectify" cookie/jar API: s/apreq_(make|serialize)_cookie/apreq_cookie_$1/
and reordering args so the cookie/jar object is always the first argument.
Macros added to provide source-compatibility with the old names.
- Perl API [joes]
Added $upload->slurp($data), which reads the contents of the file
upload "$upload" into the scalar "$data".
- C API [joes, randyk]
apreq_run_(hook|parser) are macros, so they are capitalized now.
Fixed apreq_params_as_string() and added apreq_params_as_array().
Reworked definitions of APREQ_DECLARE_HOOK, APREQ_DECLARE_PARSER
and apreq_(parser|hook)_t, hopefully to be more Win32 friendly.
Also updated the documentation.
- C API [joes]
Compensate for a missing CRLF in empty file upload block, which
actually complies with RFC 2046 Section 5.1.1. Konqueror (version unknown)
and Mozilla 0.9.7 are known to emit such blocks.
- Perl API [joes]
$req->upload() in list context failed to filter out non-uploads.
Also $req->upload("nonexistent-key-name") segfaults.
- Perl test suite
t/TEST.PL must run parent class' pre_configure to get the
configuration right
- C API [joes]
apreq_brigade_concat() wasn't supplying the final EOS bucket
to large brigades (>256K), which somtimes caused the prefetch
loop in mod_apreq.c's apreq_filter() to hang.
- Documentation [joes]
CHANGES file reformatted, removing dates & other clutter
as Stas suggests.
- C API [joes]
Rewrote cgi_read() in apreq_env.c and reworked mod_apreq.c
to enforce apreq_env_max_body() settings.
- C API [joes]
Fixed bug in url_parser code- missing context brigade was
needed to track key-value pairs which span multiple buckets.
- C API [joes]
API modifications: removed struct apreq_cfg_t, adding
new apreq_env hooks max_body, max_brigade_len, and temp_dir.
Folded apreq_parsers.h into apreq_params.h and modified the arguments
to apreq_run_parser() and apreq_run_hook(). Renamed
apreq_parser_t's content_type as enctype and apreq_copy_brigade()
as apreq_brigade_copy().
These changes make libapreq2.so.2.0.5 incompatible with earlier
versions.
- Perl API [stas]
Include ppport.h from blead-perl to support older perls.
Add a proper support for ithreads.
- C API [Swen Schillig, joes]
Fixed bug in calculation of Netscape cookie expiration dates.
apr_time_t is measured in microseconds, not seconds, which
threw off the arithmetic; apr_time_from_sec was needed for
the conversion.
- C API [Max Kellermann]
Fix segfault caused by invalid %-escape sequence in query string.
@section v2_02_dev Changes with libapreq2-2.02-dev (released Nov 15, 2003)
- Perl API [joes]
Fix bogus pool/cookie initializers in Apache::Cookie::set_attr(),
which caused Apache::Cookie::new to segfault. Bug
first reported to modperl list by Wolfgang Kubens.
@section v2_01_dev Changes with libapreq2-2.01-dev (released Nov 10, 2003)
- build system [joes]
Skip Apache::Test tests in env/ when Apache::Test is unavailable.
This allows the C API to be build and installed without requiring
Apache::Test (it is still a requirement for compiling the perl glue).
- C API mod_apreq.c [joes]
Parser errors were creeping into the return value of apreq_filter,
which breaks the "transparent tee" paradigm. This caused bogus
"400 Bad Request" responses (first reported by Vladimir Dudo)
to occur when libapreq2 was used by an output filter during a GET
request (handled by apache2's default handler). The test suite
has been updated accordingly.
- C API [joes]
Incorporate libapreq_cgi into libapreq2 as the default environment,
and add apreq_env_t and initializer apreq_env_module() to manage the
environment at runtime (determining the environment at load-time
was problematic on non-ELF systems).
@section v2_0_0 Changes with libapreq2-2.00-dev (Oct 25, 2003)
- C API: libapreq_cgi.c [randyk, joes]
CGI environment defined by env/libapreq_cgi.c is functional
(with tests added to env/t). This library may soon be incorporated
directly into libapreq2 as a default enviroment.
- C API: mod_apreq.c [joes]
Added ctx->saw_eos to ensure we don't read from upstream filters
after receiving an eos bucket. Otherwise it was possible for
two eos buckets to appear when a prefetch read is involved, which
breaks other modules like mod_proxy. This bug was uncovered by
Philippe Chiasson. mod_apreq's apreq_env_majic_number bumped to
reflect the added fixes.
- configure: --enable-perl-glue [joes]
The --enable-perl-glue option integrates the perl glue into the
normal Unix build cycle. It is disabled by default, but is silently
reenabled if the user configures the source tree via Makefile.PL.
- C API [joes]
Added apreq_header_attribute() and fixed mfd parser to allow
"charset" attribute to appear in the Content-Type header. Sven
Geisler points out that Opera 7.20 does generate such headers.
- C API [joes]
Added versioning API following http://apr.apache.org/versioning.html
apreq_env renamed apreq_env_name, and apreq_env_magic_number added
to provide versioning for environments (modules). The header files
are now installed to "include/apreq2", and the library is renamed
"libapreq2". Also added an apreq2-config script based on apu-config.
- configure: static mod_apreq.c [Bojan Smojver, joes]
Add --with-apache2-src configure option, along with --with-apr-config
and --with-apu-config, and provide support for compiling mod_apreq
into httpd as a static apache module.
- C API: mod_apreq.c [joes]
Support for internal redirects added to the mod_apreq filter.
This ensures any POST data prefetched in the main request
gets passed along to the subrequest handler(s).
- C bugfix: apreq_decode [Graham Clark]
If the source and destination strings are represented by the same
pointer - e.g. if called as apreq_unescape(s) - string s is modified
incorrectly in general. Patch includes new unit test.
- Perl API [joes]
Added $req->parse, $req->status, & "preparse" logic
to $req->param & $req->upload.
- C API [joes]
Added "preparse" logic to apreq_params & apreq_uploads
to bring behavior in line with libapreq-1.x.
- C API [joes]
Dropped param->charset.
Make apreq_brigade_concat public, so mod_apreq can use it
for its ctx->spool brigade.
- Documentation [joes]
Updated Cookie_pod to reflect API changes over v1.X.
- Documentation [joes]
Added doxygen links to Apache::Request and Apache::Cookie
perl docs.
- C API [joes]
Added apreq_copy_brigade(bb) to apreq.h.
- C API [joes]
The new filter-based design required a complete
departure from libapreq-1.X codebase. libapreq-2
is based solely on APR, and to be fully functional,
requires a supporting environment similar to Apache-2.
A person wishing to port libapreq-2 to a new environment
needs to provide definitions for the declarations in apreq_env.h.
- Perl API [joes]
Aggregates are always collected into an APR::Table-based package.
New table packages: Apache::Cookie::Table, Apache::Request::Table,
and Apache::Upload::Table.
- Perl API [joes]
Apache::Cookie->fetch now requires an "environment" argument ($r).
Its return value is blessed into the Apache::Cookie::Jar class.
- Perl API [joes]
Two new request lookup functions:
-# $req->args - param lookup using only the query string
-# $req->body - param lookup using only the POST data
**/