Parent Directory
|
Revision Log
| Links to HEAD: | (view) (annotate) |
| Sticky Revision: |
Fix leak associated to calling apreq_brigade_fwrite() on an upload brigade.
update to new licenese header per board resolution
Its 2006 now bump the Copyright year
Add explicit cast in apreq_escape()/apreq_util.h to keep C++ compilers happy. Submitted by: Ville Skytta Reviewed by: joes
Eliminate charset offsets from apreq_decode(v) return value.
Factor out the charset detection code from url_decode to apreq_charset_divine. It's much cleaner to do the charset heuristics after decoding the string (instead of doing it while decoding).
style cleanup: delete-trailing-whitespace
apreq_brigade_move() bugfix: pass previous bucket to APR_RING_x()
Drop brigade-debugging macros for portability to httpd 2.0.47.
Swapping trunk with the multi-env branch, step 2.
Add apreq_cp1252_to_utf8().
Document charset returns from apreq_decode and apreq_decodev.
Doxygen fixes.
Replace leaky uses of apr_brigade_split with new apreq_brigade_move, patterned on Paul Querna's r154200 patch to httpd's core_filters.c.
Make apreq_join() and apreq_params_as_string() return an empty string on n==0. Submitted by: Max Kellermann Reviewed by: joes
This patch includes two components:
1) Max Kellermann's rewrite of apreq_fwrite
which removes the recursion, and eliminates
the possibility of a "successful zero-byte-write"
infinite loop.
2) Define a copy method for SPOOL buckets. It's
clear from the perl glue's $upload->io() implementation
that on a copy, the original bucket stays a SPOOL
while the copy becomes an ordinary file bucket.
API documentation updates. Submitted by: Max Kellermann Reviewed by: joes
Working on Apache::Upload API... with this patch, the failure list should be: Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/apreq/request.t 18 10 55.56% 4-5 10-15 17-18
++2004 in Copyrights.
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.
Add flags to apreq_value_t, planning for future charset support. This is an ABI change, starting with libapreq2.so.2.0.24.
property cleanup
Reviewed by: joes add tests for apreq_(make|copy)_value, and declare apreq_copy_value using APREQ_DECLARE().
Reorder args in apreq_decodev and rename bytes_written dlen (which is less confusing since this represents the length of the decoded string, not the size of the pre-decoded iovec data).
Eliminate tail-recursion in apreq_decodev.
Add apreq_decodev to fix bug in url parser reported by Ken Burcham.
- 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.
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).
Fix longstanding mod_ssl-related bug: missing apr_bucket_setaside calls on stored-away transient buckets.
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.
Eliminate apr_table_nelts macro
drop const qualifier from first argument to apreq_header_attribute (mainly because it confuses XSBuilder).
Opera may include a charset attribute in its Content-Type header. I dropped nextval() from apreq_parsers.c and replaced it with apreq_header_attribute() in apreq.h. Updated the mfd parser test in t/parsers.c accordingly.
Add versioning changes to libapreq- 1) The shared library is now named libapreq2. 2) The header files get installed into their own subdirectory: apreq2. 3) Added a versioning API (apreq_version.[ch]) based on apr-util. 4) I also added an apreq2-config script based on apu-config.
make apreq_brigade_concat public, and use it for controlling mod_apreq's spool.
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
'%make apr_tags' creates doxygen tags for apr & apr-util
Deprecate apreq_expires in favor of apr_rfc822_date, add doc link to apreq homepage
Eliminate codependency between cookie->version and cookie->time by using max_age to store the cookie's lifetime.
undefining APR_INLINE no longer needed on Win32
License check: add/fix license year = 2003 for httpd-apreq-2
Add name, info, value, & link to upload API.
Reviewed by: joes For the benefit of Win32, don't declare apreq_copy_value and apreq_merge_values with APREQ_DECLARE.
ExtUtils::XSBuilder seems to like the defines the other way around ...
Change declarations of APREQ_DECLARE* on Win32 to use __declspec(dllexport)
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.
For Win32, - don't use APR_INLINE, so functions will be added to libapreq.lib. - temporary workaround until the proper form of APREQ_DECLARE can be worked out.
Eliminate a few segfaults in tree insertion/deletion algorithms. Added test handler and filter injection logic to mod_apreq.c
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 *) .
replace table_iter API with simpler table_elts
Polish table iterator API.
Fix off-by-one errors in url parser.
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.
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.
Symmetrize the APIs for cookies & params.
Import apreq_params skeleton, along with some state management tweaks. Parsers are coming next.
Sweeping changes to implementation, just a few header tweaks tho.
Prep for cookies.
Clean up table API.
Import Frankentables.
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 |