Parent Directory
|
Revision Log
| Links to HEAD: | (view) (annotate) |
| Sticky Revision: |
update to new licenese header per board resolution
fix doc bug- we don't add an apreq_charset_t to the return value.
Its 2006 now bump the Copyright year
style cleanup: delete-trailing-whitespace
Make c++ compilers happy with explicit casts for apreq_param_charset_*.
Swapping trunk with the multi-env branch, step 2.
Document charset returns from apreq_decode and apreq_decodev.
First crack at charset divination in apreq_decode, based
on Sam Ruby's "Survival guide to i18n":
http://intertwingly.net/stories/2004/04/14/i18n.html
This commit also incorporates Max Kellermann's patch
http://marc.theaimsgroup.com/?l=apreq-dev&m=111149291030597&w=2
which removes goto from apreq_decodev, and adds a test for that.
s/TAINT/TAINTED/g to be consistent (and better match perl's SvTAINTED flag).
Make apreq_join() and apreq_params_as_string() return an empty string on n==0. Submitted by: Max Kellermann Reviewed by: joes Note: This patch should complete r157331, which only patched apreq_util.h.
Remove experimental apreq_*_size functions. Submitted by: Max Kellermann Reviewed by: joes
API documentation updates. Submitted by: Max Kellermann Reviewed by: joes
++2004 in Copyrights.
Treat ASCII as the default charset.
Add utf8 charset flag for params.
Replace v->size with v->nlen + v->dlen. Added supporting apreq_value_table_add().
Change v->size semantics: now it represents the total amount of memory appended to the apreq_value_t struct. Added supporting apreq_param_nlen(), apreq_param_vlen(), apreq_param_size(), apreq_cookie_nlen(), apreq_cookie_vlen(), apreq_cookie_size(), apreq_value_table_add(). Also a few more performance tweaks for the new perl APIs.
Move apreq_status_is_error to apreq_module_status_is_error, since that's all it represents. Also drop apreq_*_(name|value) inlines; apreq_value_t needs to remain a public struct. Improved error codes in apreq_error.h, added new tests for apreq_strerrror. Also includes whitespace cleanups for function declarations; started work to bring doxygen docs back in sync. The APR::Request:: perl glue is taking shape. The basic idea is to directly map apreq_module.h to APR::Request, and map the remaining apreq_foo.h to APR::Request::Foo. Removed deprecated apreq_expires, apreq_make_*. Renamed apreq_run_$foo apreq_$foo_run. Dropped const qualifier from apreq_join's return value.
- Add apreq_error.h, apreq_module.h.
- Rename apreq_run* and apreq_make* funcs to conform with
apreq_$obj_$meth scheme.
- Replace c->version & c->secure with flags.
- Parsers are assumed to be working with external data, so the
cookies & params they produce are marked tainted.
Reorganize around include/, library/, and module/ dirs
Convert APREQ_RUN_PARSER and APREQ_RUN_HOOK to inline, and downcase them. Remove apreq_memmem. Convert apreq_(un)escape to inline. apreq_escape does not create an apreq_value_t*. Initialize default_parsers explicitly to NULL. Convert APREQ_BRIGADE_COPY to inline, and downcase it. Lowercase APREQ_BRIGADE_SETASIDE, APREQ_BRIGADE_COPY. Convert apreq_cookie_name and apreq_cookie_value macros to inline. Convert apreq_param_name, apreq_param_value, apreq_param_info, apreq_param_brigade to inline. Add apreq_initialize to allow thread-safe parser registration. Submitted by: Max Kellermann Reviewed by: joes
Widespread API refactorization to remove apreq_jar_t and apreq_request_t:
- Header includes reorganized; apreq_parsers.h added (back again).
- Replaced apreq_jar_t and apreq_request_t with single apreq_env_handle_t.
- Added const qualifier to "v" attribute of apreq_cookie_t and apreq_param_t.
- Use union type-puns to drop const qualifiers inside the new
apreq_value_to_cookie and apreq_value_to_param implementations
(gcc generates same object code as the macro versions did).
- Moved "flags" attribute from apreq_value_t to apreq_cookie_t and apreq_param_t.
- Remove env argument from hooks and parsers.
- Reduce apreq_env_module to minimal set of operations.
- Replace apreq_log calls with apreq-specific error codes.
- Hooks are called on each body param now, not just during file uploads.
- Tie the cgi handle to its creator pool.
Detailed changes by header file:
[apreq.h]
- Remove flags from apreq_value_t.
- Remove const qualifier from apreq_value_t's "name" attribute.
- Remove apreq_value_merge* and apreq_value_copy*.
- Remove apreq_char_to_value, apreq_strtoval, and apreq_strlen.
- Move apreq_enctype to apreq_env.h.
- Move apreq_env_handle_t struct definition to apreq_env.h
- Change signature of apreq_decode.
- Move apreq_brigade_concat here, changed its signature and improved it alot.
- Remove apreq_brigade_spoolfile.
- Dropped APREQ_*_ENCTYPE, renamed some APREQ_$foo defaults APREQ_DEFAULT_$foo.
- Added APREQ_ERROR_*.
[apreq_cookie.h]
- Remove apreq_env.h include.
- Remove apreq_jar_t.
- Add "flags" to apreq_cookie_t, add const qualifier to its "v" attr.
- Remove apreq_jar* functions.
- Add apreq_parse_cookie_header.
- Move apreq_cookie, apreq_cookie_bake(2), and
apreq_ua_cookie_version to apreq_env.h.
[apreq_params.h]
- Remove apreq_env.h include.
- Remove apreq_request_t.
- Add "flags" to apreq_param_t, and const qualifier to its "v" attr.
- Rename "bb" attribute "upload" in apreq_param_t.
- Remove apreq_request* functions.
- Remove apreq_parse_request.
- Changed apreq_decode_param signature.
- Replace env argument with apr_table_t in apreq_params_as_array,
apreq_params_as_string,
- Move remaining apreq_param* to apreq_env.h.
- Move parser and hook sections to apreq_parsers.h.
- Change apreq_upload(s) old apreq_request_t arg to apr_table_t.
[apreq_parsers.h]
- Acquire the hook and parser sections of original apreq_params.h.
- Remove env argument from APREQ_PARSER_ARGS and APREQ_HOOK_ARGS
- Augment apreq_hook_t and apreq_parser_t to replace missing env features.
- Change apreq_make_parser and apreq_make_hook signatures.
- Rename apreq_add_hook to apreq_parser_add_hook, returning apr_status_t.
- Change apreq_parser signature.
[apreq_env.h]
- Remove read, log, pool, bucket_alloc, request, jar, and query_string methods.
- Include apreq_parsers.h.
- Reorganize apreq_env_module_t to provide hook, parser, jar, args,
& body table ops.
- Rename max_brigade to "brigade_limit", max_body to "read_limit".
- Change related module sigs, including temp_dir, to get/set methods.
- Add parser and read_limit args to apreq_env_make_custom_handle.
- Drop "name" arg and APREQ_ENV_MODULE =~ s/_ENV//.
- s/apreq_env_make/apreq_handle/ in the handle constructor names.
[mod_apreq.c, apreq_env_apache2.h]
- Changed APREQ_Max* configs to APREQ_BrigadeLimit and APREQ_ReadLimit.
- Handle constructor renamed apreq_handle_apache2.
Introduce apreq_env_handle_t to replace the void *env usage.
Also added apreq_env_custom for making private handles, and new
apreq_env_apache2.h to let mod_apreq export apreq_env_make_apache2.
This patch represents part one of
http://marc.theaimsgroup.com/?l=apreq-dev&m=110667661730797&w=2
I added a few additional notes to STATUS and CHANGES.
Submitted by: Max Kellermann
Reviewed by: joes
New gcc warning flags and associated fixes. Submitted by: Max Kellermann Reviewed by: joes
Create multi-env branch.
Drop the useless WIN32 conditional for APREQ_DECLARE_(HOOK|PARSER). Hooks and parsers are invoked internally through function pointers, so they should always be using the APREQ_DECLARE_NONSTD declaration. which already has apr's Win32 logic built into it.
property cleanup
Add apreq_register_parser(), which allows users to add their own parsers to apreq_parser()'s recognized MIME types. Also add some memory-management todos in STATUS
Add apreq_hook_discard_brigade
Add multipart/related support to mfd parser, completing basic XForms support. Reimplement the apr_xml parser as a hook + a generic parser.
Add apreq_parse_xml parser.
Add body_status attribute to apreq_request_t, to allow both the environment and the parser to report any errors encountered.
Implement HOOK_DATA and UPLOAD_HOOK
apreq_parse_request needs to return APR_ENOTIMPL when the enctype isn't recognized.
- Perl API [joes] Added $jar->status, $req->args_status and $req->body_status to report parsing errors. - C API [joes] Dropped status attribute of apreq_value_t. Added status field to apreq_jar_t and added args_status field to apreq_request_t. Parsers also must return their public status code when a NULL brigade is passed.
Implement apreq_hook_disable_uploads, and start work (still unimplemented) on perl glue implementation of DISABLE_UPLOADS, HOOK_DATA and UPLOAD_HOOK.
Large-scale doxygen cleanups: add src/groups.dox.in to move doxygen formatting instructions out of the header files. Document the new directives for mod_apreq, and have doxygen build manpages. The manpages are currently unsuitable for installed documentation.
Namespace-protect remaining globals (mainly enums), and start a series of doxygen fixes.
Fully specify parser's behavior wrt input brigade. Parsers will never destroy it, and sometimes will not even clean it up completely (see comments on rejected buckets in apreq_params.h).
Reviewed by: joes use APREQ_DECLARE_NONSTD, rather than APREQ_DECLARE, for defining APREQ_DECLARE_PARSER and APREQ_DECLARE_HOOK on Win32.
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.
Reformatted STATUS file, removing dates. Removed struct apreq_cfg_t and added corresponding apreq_env hooks. Bumped version numbers (note- libapreq2.so.2.0.5 is not ABI compatible with earlier versions). This is a large patch, but all existing tests should still pass.
Update Apache License to 2.0 in all *.[ch] files.
Drop param->charset from apreq_params.h
Phase out test_config.pl script. Rework prefetch code in mod_apreq.c and move apreq_brigade_copy function from apreq_params.c to apreq.c
s/read_bytes/read_ahead/ in apreq_cfg_t,added apreq_request_config & XS wrapper. Modified xsbuilder.pl to allow it to parse the header files in glue/perl/xsbuilder (mainly hoping this will eventually generate better pdd/pod)
Eliminate codependency between cookie->version and cookie->time by using max_age to store the cookie's lifetime.
License check: add/fix license year = 2003 for httpd-apreq-2
Add name, info, value, & link to upload API.
Have apreq_param_brigade return a copy of param->bb
Drop const qualifier from apreq_upload return value. Still futzing with apreq_xs_postperl.h and friends. The good news is that the upload test in glue/perl/t/apreq/request.t should pass now.
Add config framework to apreq parsers. Add file bucket logic for spooling uploads into brigades.
Lots of doxygen updates. Preliminary changes to prefetch code in mod_apreq.c, and some XS fixes to allow constructors to derive their classname from the caller.
Add build/doxygen.conf and build doxygen documentation in /docs via '% make docs'
Drop version argument from make_cookie.
s/apreq_tables/apr_tables/g, phase 1: Update core to only use apr_tables, but (for now) still build apreq_tables into libapreq.so
Major improvements to the apreq_parser API and mod_apreq filter.
Structural changes to the core:
APREQ_ENV is gone.
struct apreq_hook_t added (similar API to httpd's filter stack),
struct apreq_parser_t simplified,
struct apreq_request_t modified to hold config data (as in libapreq-1).
"passive-aggressive" parsing code added to apreq_param() (similar
to libapreq-1, but slightly less agressive :-).
Feature additions to mod_apreq.c:
Filter supports prefetch reads.
Filter should DTRT for subrequests & internal redirects.
Also cleaned up libapreq_cgi.c a little bit.
Add simple param tests.
Table Iterator API simplified (back to using apr-style table_elts); table_keys() added. apreq_params returns a table, and apreq_param returns a param again (instead of a char *) .
Polish table iterator API.
Changed configure option:
dropped: --with-apache-includes
temporarily replaced with: --with-apache2 (server-root, assuming
typical Apache layout).
Lots of bugfixes focusing on urlencoded data parsers (GET & POST).
The mod_apreq filter is now functional; to bang on it, just do this
% ./buildconf
% ./configure --with-apache2=/path/to/apache2
% make
% cp src/.libs/libapreq.* /path/to/apache2/libs
% cp env/.libs/mod_apreq.so /path/to/apache2/modules
Now edit httpd.conf by adding
LoadModule apreq_module modules/mod_apreq.so
...
SetInputFilter APREQ
in some appropriate place. Hopefully the server will start up :-).
Lowering the loglevel to DEBUG should produce some debugging messages in
the error log.
Add template for mod_apreq.
core API (parser, env) cleanup.
Completing work on upload-hook API. Next phase is to get current /src to a compilable state.
apreq_env cleanups, etc.
C != C++
Symmetrize the APIs for cookies & params.
Import apreq_params skeleton, along with some state management tweaks. Parsers are coming next.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
| apache@apache.org | ViewVC Help |
| Powered by ViewVC 1.1.2 |