cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/02/19 15:55:23 Modified:.Changes lib/Apache compat.pm t/response/TestCompat apache.pm xs/Apache/Response Apache__Response.h xs/maps modperl_functions.map xs/tables/current/ModPerl FunctionTable.pm Log: move $r-send_http_header implementation to Apache::compat. This allows the 1.0 code to run unmodified if $r-send_http_header is called before the response change. we already handle the check whether content_type was set, when deciding whether the headers are to be parsed inside modperl_wbucket_pass(). Revision ChangesPath 1.130 +6 -0 modperl-2.0/Changes Index: Changes === RCS file: /home/cvs/modperl-2.0/Changes,v retrieving revision 1.129 retrieving revision 1.130 diff -u -r1.129 -r1.130 --- Changes 19 Feb 2003 14:14:35 - 1.129 +++ Changes 19 Feb 2003 23:55:22 - 1.130 @@ -10,6 +10,12 @@ =item 1.99_09-dev +move $r-send_http_header implementation to Apache::compat. This +allows the 1.0 code to run unmodified if $r-send_http_header is +called before the response change. we already handle the check whether +content_type was set, when deciding whether the headers are to be +parsed inside modperl_wbucket_pass(). [Stas] + fixes to Apache::compat. make $r-connection-auth_type interface with r-ap_auth_type. make both $r-connection-auth_type and $r-connection-user writable. [Geoffrey Young] 1.81 +5 -0 modperl-2.0/lib/Apache/compat.pm Index: compat.pm === RCS file: /home/cvs/modperl-2.0/lib/Apache/compat.pm,v retrieving revision 1.80 retrieving revision 1.81 diff -u -r1.80 -r1.81 --- compat.pm 19 Feb 2003 14:14:36 - 1.80 +++ compat.pm 19 Feb 2003 23:55:23 - 1.81 @@ -154,6 +154,11 @@ return Apache::current_callback(); } +sub send_http_header { +my ($r, $type) = @_; +$r-content_type($type) if defined $type; +} + #to support $r-server_root_relative *server_root_relative = \Apache::server_root_relative; 1.5 +3 -0 modperl-2.0/t/response/TestCompat/apache.pm Index: apache.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestCompat/apache.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- apache.pm 17 Feb 2003 09:03:17 - 1.4 +++ apache.pm 19 Feb 2003 23:55:23 - 1.5 @@ -55,3 +55,6 @@ 1; +__END__ +# so we can test whether send_httpd_header() works fine +PerlOptions +ParseHeaders 1.9 +0 -22 modperl-2.0/xs/Apache/Response/Apache__Response.h Index: Apache__Response.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/Response/Apache__Response.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- Apache__Response.h17 Jan 2003 02:26:31 - 1.8 +++ Apache__Response.h19 Feb 2003 23:55:23 - 1.9 @@ -13,28 +13,6 @@ rcfg-wbucket-header_parse = 0; \ } -/* XXX: should only be part of Apache::compat */ -static MP_INLINE void -mpxs_Apache__RequestRec_send_http_header(pTHX_ request_rec *r, - const char *type) -{ -MP_dRCFG; - -if (type) { -ap_set_content_type(r, apr_pstrdup(r-pool, type)); -} - -if (rcfg-wbucket) { -/* turn off PerlOptions +ParseHeaders */ -rcfg-wbucket-header_parse = 0; -} -else { -/* the response is not initialized yet */ -Perl_croak(aTHX_ send_http_header() can't be called before - the response phase); -} -} - static MP_INLINE void mpxs_Apache__RequestRec_set_last_modified(request_rec *r, apr_time_t mtime) { 1.54 +0 -1 modperl-2.0/xs/maps/modperl_functions.map Index: modperl_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- modperl_functions.map 17 Feb 2003 09:03:17 - 1.53 +++ modperl_functions.map 19 Feb 2003 23:55:23 - 1.54 @@ -56,7 +56,6 @@ MODULE=Apache::Response PACKAGE=Apache::RequestRec DEFINE_send_cgi_header | | request_rec *:r, SV *:buffer - mpxs_Apache__RequestRec_send_http_header | | r, type=NULL mpxs_Apache__RequestRec_set_last_modified | | r, mtime=0 1.105 +0 -18 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/01/30 20:20:20 Modified:src/modules/perl modperl_global.c modperl_global.h xs/Apache/RequestUtil Apache__RequestUtil.h xs/tables/current/ModPerl FunctionTable.pm Log: expose modperl_global_request (needed in external apps written in XS ) Revision ChangesPath 1.7 +24 -0 modperl-2.0/src/modules/perl/modperl_global.c Index: modperl_global.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_global.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- modperl_global.c 22 May 2002 18:53:33 - 1.6 +++ modperl_global.c 31 Jan 2003 04:20:20 - 1.7 @@ -26,6 +26,30 @@ MpReqSET_GLOBAL_REQUEST_On(rcfg); } +/* get/set */ +request_rec *modperl_global_request(pTHX_ SV *svr) +{ +request_rec *cur = NULL; +apr_status_t status = modperl_tls_get_request_rec(cur); + +if (status != APR_SUCCESS) { +/* an internal problem */ +Perl_croak(aTHX_ failed to retrieve the request object); +} + +if (!cur) { +/* wrong configuration */ +Perl_croak(aTHX_ Global $r object is not available. Set:\n + \tPerlOptions +GlobalRequest\nin httpd.conf); +} + +if (svr) { +modperl_global_request_obj_set(aTHX_ svr); +} + +return cur; +} + void modperl_global_request_obj_set(pTHX_ SV *svr) { /* XXX: support sublassing */ 1.4 +2 -0 modperl-2.0/src/modules/perl/modperl_global.h Index: modperl_global.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_global.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- modperl_global.h 4 May 2001 05:49:19 - 1.3 +++ modperl_global.h 31 Jan 2003 04:20:20 - 1.4 @@ -18,6 +18,8 @@ void modperl_global_request_cfg_set(request_rec *r); +request_rec *modperl_global_request(pTHX_ SV *svr); + void modperl_global_request_set(request_rec *r); void modperl_global_request_obj_set(pTHX_ SV *svr); 1.17 +2 -19 modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h Index: Apache__RequestUtil.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- Apache__RequestUtil.h 31 Jan 2003 03:15:23 - 1.16 +++ Apache__RequestUtil.h 31 Jan 2003 04:20:20 - 1.17 @@ -85,25 +85,8 @@ static MP_INLINE request_rec *mpxs_Apache_request(pTHX_ SV *classname, SV *svr) { -request_rec *cur = NULL; -apr_status_t status = modperl_tls_get_request_rec(cur); - -if (status != APR_SUCCESS) { -/* an internal problem */ -Perl_croak(aTHX_ failed to retrieve the request object); -} - -if (!cur) { -/* wrong configuration */ -Perl_croak(aTHX_ Global $r object is not available. Set:\n - \tPerlOptions +GlobalRequest\nin httpd.conf); -} - -if (svr) { -modperl_global_request_obj_set(aTHX_ svr); -} - -return cur; +/* ignore classname */ +return modperl_global_request(aTHX_ svr); } static MP_INLINE 1.104 +14 -0 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.103 retrieving revision 1.104 diff -u -r1.103 -r1.104 --- FunctionTable.pm 29 Jan 2003 03:56:00 - 1.103 +++ FunctionTable.pm 31 Jan 2003 04:20:20 - 1.104 @@ -1494,6 +1494,20 @@ 'args' = [] }, { +'return_type' = 'request_rec *', +'name' = 'modperl_global_request', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'SV *', +'name' = 'svr' + } +] + }, + { 'return_type' = 'SV *', 'name' = 'modperl_dir_config', 'attr' = [
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/01/22 16:31:28 Modified:src/modules/perl mod_perl.c mod_perl.h modperl_filter.c modperl_util.h .Changes xs/Apache/RequestIO Apache__RequestIO.h xs/Apache/SubRequest Apache__SubRequest.h xs/tables/current/ModPerl FunctionTable.pm Log: - add a new MP_FAILURE_CROAK macro to handle failures - all response functions are now returning status and the callers check and croak on failure or progate them further. Revision ChangesPath 1.147 +10 -4 modperl-2.0/src/modules/perl/mod_perl.c Index: mod_perl.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v retrieving revision 1.146 retrieving revision 1.147 diff -u -r1.146 -r1.147 --- mod_perl.c12 Jan 2003 02:15:58 - 1.146 +++ mod_perl.c23 Jan 2003 00:31:28 - 1.147 @@ -709,12 +709,12 @@ wb-r = r; } -void modperl_response_finish(request_rec *r) +apr_status_t modperl_response_finish(request_rec *r) { MP_dRCFG; /* flush output buffer */ -modperl_wbucket_flush(rcfg-wbucket); +return modperl_wbucket_flush(rcfg-wbucket); } static int modperl_response_handler_run(request_rec *r, int finish) @@ -730,7 +730,10 @@ } if (finish) { -modperl_response_finish(r); +apr_status_t rc = modperl_response_finish(r); +if (rc != APR_SUCCESS) { +retval = rc; +} } return retval; @@ -803,7 +806,10 @@ #endif /* flush output buffer after interpreter is putback */ -modperl_response_finish(r); +apr_status_t rc = modperl_response_finish(r); +if (rc != APR_SUCCESS) { +retval = rc; +} switch (rcfg-status) { case HTTP_MOVED_TEMPORARILY: 1.56 +1 -1 modperl-2.0/src/modules/perl/mod_perl.h Index: mod_perl.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.h,v retrieving revision 1.55 retrieving revision 1.56 diff -u -r1.55 -r1.56 --- mod_perl.h12 Dec 2002 10:05:08 - 1.55 +++ mod_perl.h23 Jan 2003 00:31:28 - 1.56 @@ -88,7 +88,7 @@ void xs_init(pTHX); void modperl_response_init(request_rec *r); -void modperl_response_finish(request_rec *r); +apr_status_t modperl_response_finish(request_rec *r); int modperl_response_handler(request_rec *r); int modperl_response_handler_cgi(request_rec *r); 1.45 +5 -6 modperl-2.0/src/modules/perl/modperl_filter.c Index: modperl_filter.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- modperl_filter.c 17 Jan 2003 03:08:31 - 1.44 +++ modperl_filter.c 23 Jan 2003 00:31:28 - 1.45 @@ -23,6 +23,8 @@ ap_log_error(APLOG_MARK, APLOG_WARNING, 0, r-server, %s did not send an HTTP header, r-uri); +/* XXX: bodytext == NULL here */ +return status; } else if (!bodytext) { return APR_SUCCESS; @@ -190,17 +192,14 @@ * first modperl_input_filter_read, so it must be * destroyed at the end of the filter invocation */ -/* XXX: may be the filter must consume all the data? add a - * test to check */ apr_brigade_destroy(filter-bb_in); filter-bb_in = NULL; } -modperl_input_filter_flush(filter); +MP_FAILURE_CROAK(modperl_input_filter_flush(filter)); } else { -modperl_output_filter_flush(filter); +MP_FAILURE_CROAK(modperl_output_filter_flush(filter)); } - return status; } @@ -457,7 +456,7 @@ if (filter-flush len == 0) { /* if len 0 then $filter-write will flush */ -modperl_output_filter_flush(filter); +MP_FAILURE_CROAK(modperl_output_filter_flush(filter)); } return len; 1.38 +7 -0 modperl-2.0/src/modules/perl/modperl_util.h Index: modperl_util.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.h,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- modperl_util.h11 Jan 2003 00:02:16 - 1.37 +++ modperl_util.h23 Jan 2003 00:31:28 - 1.38 @@ -50,6 +50,13 @@ #define MP_magical_tie(sv, mg_flags) \ SvFLAGS((SV*)sv) |= mg_flags +#define
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/01/21 19:19:43 Modified:.Changes src/modules/perl modperl_io.c modperl_io.h t/modperl .cvsignore todo api.txt xs/Apache/RequestIO Apache__RequestIO.h xs/maps modperl_functions.map xs/tables/current/ModPerl FunctionTable.pm Added: t/response/TestModperl request_rec_tie_api.pm Log: - expose useful macros from modperl_io.c via modperl_io.h - add $r-FILENO implementation - add a test Revision ChangesPath 1.107 +2 -0 modperl-2.0/Changes Index: Changes === RCS file: /home/cvs/modperl-2.0/Changes,v retrieving revision 1.106 retrieving revision 1.107 diff -u -r1.106 -r1.107 --- Changes 20 Jan 2003 07:54:52 - 1.106 +++ Changes 22 Jan 2003 03:19:43 - 1.107 @@ -10,6 +10,8 @@ =item 1.99_09-dev +Add $r-FILENO implementation [Stas] + Apache::Test: Support NoAutoConfig /NoAutoConfig blocks in .pm files, so we can have a full manual control over generated config sections. These sections are fully parsed and variables are 1.1 modperl-2.0/t/response/TestModperl/request_rec_tie_api.pm Index: request_rec_tie_api.pm === package TestModperl::request_rec_tie_api; use strict; use warnings FATAL = 'all'; use Apache::RequestIO (); use Apache::Test; use Apache::TestUtil; use Apache::Const -compile = 'OK'; sub handler { my $r = shift; plan $r, tests = 1; ok t_cmp(fileno(STDOUT), $r-FILENO(), FILENO); return Apache::OK; } 1; 1.9 +0 -13 modperl-2.0/src/modules/perl/modperl_io.c Index: modperl_io.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_io.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- modperl_io.c 24 Mar 2002 02:41:29 - 1.8 +++ modperl_io.c 22 Jan 2003 03:19:43 - 1.9 @@ -1,18 +1,5 @@ #include mod_perl.h -/* - * bleedperl change #11639 switch tied handle magic - * from living in the gv to the GvIOp(gv), so we have to deal - * with both to support 5.6.x - */ -#if ((PERL_REVISION == 5) (PERL_VERSION = 7)) -# define TIEHANDLE_SV(handle) (SV*)GvIOp((SV*)handle) -#else -# define TIEHANDLE_SV(handle) (SV*)handle -#endif - -#define dHANDLE(name) GV *handle = gv_fetchpv(name, TRUE, SVt_PVIO) - #define TIEHANDLE(handle,r) \ modperl_io_handle_tie(aTHX_ handle, Apache::RequestRec, (void *)r) 1.2 +13 -0 modperl-2.0/src/modules/perl/modperl_io.h Index: modperl_io.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_io.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- modperl_io.h 5 May 2001 22:06:41 - 1.1 +++ modperl_io.h 22 Jan 2003 03:19:43 - 1.2 @@ -1,6 +1,19 @@ #ifndef MODPERL_IO_H #define MODPERL_IO_H +/* + * bleedperl change #11639 switch tied handle magic + * from living in the gv to the GvIOp(gv), so we have to deal + * with both to support 5.6.x + */ +#if ((PERL_REVISION == 5) (PERL_VERSION = 7)) +# define TIEHANDLE_SV(handle) (SV*)GvIOp((SV*)handle) +#else +# define TIEHANDLE_SV(handle) (SV*)handle +#endif + +#define dHANDLE(name) GV *handle = gv_fetchpv(name, TRUE, SVt_PVIO) + #define IoFLUSH_off(gv) \ IoFLAGS(GvIOp((gv))) = ~IOf_FLUSH 1.11 +1 -0 modperl-2.0/t/modperl/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl-2.0/t/modperl/.cvsignore,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- .cvsignore22 Oct 2002 15:13:22 - 1.10 +++ .cvsignore22 Jan 2003 03:19:43 - 1.11 @@ -10,3 +10,4 @@ methodobj.t method.t setauth.t +request_rec_tie_api.t 1.30 +1 -1 modperl-2.0/todo/api.txt Index: api.txt === RCS file: /home/cvs/modperl-2.0/todo/api.txt,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- api.txt 6 Dec 2002 16:19:36 - 1.29 +++ api.txt 22 Jan 2003 03:19:43 - 1.30 @@ -3,7 +3,7 @@ -- tied filehandle interface: - -CLOSE, OPEN, EOF, TELL, SEEK, FILENO + -CLOSE, OPEN, EOF, TELL, SEEK -READLINE - proper implementation (see comment in Apache::compat) $r-finfo: 1.31 +7 -0
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/01/16 18:26:32 Modified:.Changes xs/Apache/Response Apache__Response.h xs/tables/current/ModPerl FunctionTable.pm Log: fix segfault in send_http_header when it's called before the response phase Revision ChangesPath 1.102 +3 -0 modperl-2.0/Changes Index: Changes === RCS file: /home/cvs/modperl-2.0/Changes,v retrieving revision 1.101 retrieving revision 1.102 diff -u -r1.101 -r1.102 --- Changes 16 Jan 2003 02:38:09 - 1.101 +++ Changes 17 Jan 2003 02:26:31 - 1.102 @@ -10,6 +10,9 @@ =item 1.99_09-dev +fix segfault in send_http_header when it's called before the response +phase [Stas] + input stream filtering support was added + tests (plus renaming filter tests so we can know from the test name what kind of filter is tested) [Stas] 1.8 +11 -2 modperl-2.0/xs/Apache/Response/Apache__Response.h Index: Apache__Response.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/Response/Apache__Response.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Apache__Response.h19 May 2002 23:01:12 - 1.7 +++ Apache__Response.h17 Jan 2003 02:26:31 - 1.8 @@ -15,7 +15,8 @@ /* XXX: should only be part of Apache::compat */ static MP_INLINE void -mpxs_Apache__RequestRec_send_http_header(request_rec *r, const char *type) +mpxs_Apache__RequestRec_send_http_header(pTHX_ request_rec *r, + const char *type) { MP_dRCFG; @@ -23,7 +24,15 @@ ap_set_content_type(r, apr_pstrdup(r-pool, type)); } -rcfg-wbucket-header_parse = 0; /* turn off PerlOptions +ParseHeaders */ +if (rcfg-wbucket) { +/* turn off PerlOptions +ParseHeaders */ +rcfg-wbucket-header_parse = 0; +} +else { +/* the response is not initialized yet */ +Perl_croak(aTHX_ send_http_header() can't be called before + the response phase); +} } static MP_INLINE void 1.95 +4 -0 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.94 retrieving revision 1.95 diff -u -r1.94 -r1.95 --- FunctionTable.pm 15 Jan 2003 06:07:10 - 1.94 +++ FunctionTable.pm 17 Jan 2003 02:26:32 - 1.95 @@ -5370,6 +5370,10 @@ 'name' = 'mpxs_Apache__RequestRec_send_http_header', 'args' = [ { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { 'type' = 'request_rec *', 'name' = 'r' },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/01/16 19:08:31 Modified:src/modules/perl modperl_filter.c modperl_filter.h .Changes xs modperl_xs_util.h xs/Apache/RequestIO Apache__RequestIO.h xs/tables/current/ModPerl FunctionTable.pm Log: prevent segfault in $r-print / $filter-print (in output filter) and related functions when they are called before the response phase Revision ChangesPath 1.44 +11 -4 modperl-2.0/src/modules/perl/modperl_filter.c Index: modperl_filter.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- modperl_filter.c 15 Jan 2003 06:07:10 - 1.43 +++ modperl_filter.c 17 Jan 2003 03:08:31 - 1.44 @@ -55,13 +55,18 @@ return rv; } -MP_INLINE apr_status_t modperl_wbucket_write(modperl_wbucket_t *wb, +MP_INLINE apr_status_t modperl_wbucket_write(pTHX_ modperl_wbucket_t *wb, const char *buf, apr_size_t *wlen) { apr_size_t len = *wlen; *wlen = 0; +if (!wb) { +/* the response is not initialized yet */ +Perl_croak(aTHX_ can't be called before the response phase); +} + if ((len + wb-outcnt) sizeof(wb-outbuf)) { apr_status_t rv; if ((rv = modperl_wbucket_flush(wb)) != APR_SUCCESS) { @@ -505,7 +510,8 @@ return filter-rc; } -MP_INLINE apr_status_t modperl_input_filter_write(modperl_filter_t *filter, +MP_INLINE apr_status_t modperl_input_filter_write(pTHX_ + modperl_filter_t *filter, const char *buf, apr_size_t *len) { @@ -519,11 +525,12 @@ return APR_SUCCESS; } -MP_INLINE apr_status_t modperl_output_filter_write(modperl_filter_t *filter, +MP_INLINE apr_status_t modperl_output_filter_write(pTHX_ + modperl_filter_t *filter, const char *buf, apr_size_t *len) { -return modperl_wbucket_write(filter-wbucket, buf, len); +return modperl_wbucket_write(aTHX_ filter-wbucket, buf, len); } apr_status_t modperl_output_filter_handler(ap_filter_t *f, 1.17 +6 -3 modperl-2.0/src/modules/perl/modperl_filter.h Index: modperl_filter.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.h,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- modperl_filter.h 15 Jan 2003 06:07:10 - 1.16 +++ modperl_filter.h 17 Jan 2003 03:08:31 - 1.17 @@ -16,7 +16,8 @@ MP_INLINE apr_status_t modperl_wbucket_flush(modperl_wbucket_t *b); -MP_INLINE apr_status_t modperl_wbucket_write(modperl_wbucket_t *b, +MP_INLINE apr_status_t modperl_wbucket_write(pTHX_ + modperl_wbucket_t *b, const char *buf, apr_size_t *wlen); @@ -50,7 +51,8 @@ SV *buffer, apr_size_t wanted); -MP_INLINE apr_status_t modperl_output_filter_write(modperl_filter_t *filter, +MP_INLINE apr_status_t modperl_output_filter_write(pTHX_ + modperl_filter_t *filter, const char *buf, apr_size_t *len); @@ -75,7 +77,8 @@ SV *buffer, apr_size_t wanted); -MP_INLINE apr_status_t modperl_input_filter_write(modperl_filter_t *filter, +MP_INLINE apr_status_t modperl_input_filter_write(pTHX_ + modperl_filter_t *filter, const char *buf, apr_size_t *len); 1.103 +5 -2 modperl-2.0/Changes Index: Changes === RCS file: /home/cvs/modperl-2.0/Changes,v retrieving revision 1.102 retrieving revision 1.103 diff -u -r1.102 -r1.103 --- Changes 17 Jan 2003 02:26:31 - 1.102 +++ Changes 17 Jan 2003 03:08:31 - 1.103 @@ -10,8 +10,11 @@ =item 1.99_09-dev -fix
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/01/14 22:07:11 Modified:src/modules/perl modperl_filter.c modperl_filter.h modperl_types.h xs/tables/current/ModPerl FunctionTable.pm Log: - implementation of the input stream filtering support (1st phase) - code refactoring to be re-use for input and output filtering - proper support for mis-behaved feeding filters that send more than one EOS bucket Revision ChangesPath 1.43 +225 -66 modperl-2.0/src/modules/perl/modperl_filter.c Index: modperl_filter.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.c,v retrieving revision 1.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- modperl_filter.c 12 Jan 2003 02:21:37 - 1.42 +++ modperl_filter.c 15 Jan 2003 06:07:10 - 1.43 @@ -94,15 +94,23 @@ filter-mode = mode; filter-f = f; -filter-bb = bb; filter-pool = p; filter-wbucket.pool = p; filter-wbucket.filters = f-next; filter-wbucket.outcnt = 0; +if (mode == MP_INPUT_FILTER_MODE) { +filter-bb_in = NULL; +filter-bb_out = bb; +} +else { +filter-bb_in = bb; +filter-bb_out = NULL; +} + MP_TRACE_f(MP_FUNC, filter=0x%lx, mode=%s\n, - (unsigned long)filter, mode == MP_OUTPUT_FILTER_MODE ? - output : input); + (unsigned long)filter, + mode == MP_INPUT_FILTER_MODE ? input : output); return filter; } @@ -138,7 +146,10 @@ modperl_handler_make_args(aTHX_ args, Apache::Filter, filter-f, - APR::Brigade, filter-bb, + APR::Brigade, + (filter-mode == MP_INPUT_FILTER_MODE + ? filter-bb_out + : filter-bb_in), NULL); modperl_filter_mg_set(aTHX_ AvARRAY(args)[0], filter); @@ -168,26 +179,59 @@ filter-seen_eos = 0; } -if (filter-mode == MP_OUTPUT_FILTER_MODE) { +if (filter-mode == MP_INPUT_FILTER_MODE) { +if (filter-bb_in) { +/* in the streaming mode filter-bb_in is populated on the + * first modperl_input_filter_read, so it must be + * destroyed at the end of the filter invocation + */ +/* XXX: may be the filter must consume all the data? add a + * test to check */ +apr_brigade_destroy(filter-bb_in); +filter-bb_in = NULL; +} +modperl_input_filter_flush(filter); +} +else { modperl_output_filter_flush(filter); } + return status; } /* output filters */ -MP_INLINE static apr_status_t send_eos(ap_filter_t *f) +MP_INLINE static apr_status_t send_input_eos(modperl_filter_t *filter) +{ +apr_bucket_alloc_t *ba = filter-f-c-bucket_alloc; +apr_bucket *b = apr_bucket_eos_create(ba); +APR_BRIGADE_INSERT_TAIL(filter-bb_out, b); +((modperl_filter_ctx_t *)filter-f-ctx)-sent_eos = 1; +return APR_SUCCESS; + +} + +MP_INLINE static apr_status_t send_input_flush(modperl_filter_t *filter) +{ +apr_bucket_alloc_t *ba = filter-f-c-bucket_alloc; +apr_bucket *b = apr_bucket_flush_create(ba); +APR_BRIGADE_INSERT_TAIL(filter-bb_out, b); +return APR_SUCCESS; +} + +MP_INLINE static apr_status_t send_output_eos(ap_filter_t *f) { apr_bucket_alloc_t *ba = f-c-bucket_alloc; apr_bucket_brigade *bb = apr_brigade_create(MP_FILTER_POOL(f), ba); apr_bucket *b = apr_bucket_eos_create(ba); APR_BRIGADE_INSERT_TAIL(bb, b); +((modperl_filter_ctx_t *)f-ctx)-sent_eos = 1; return ap_pass_brigade(f-next, bb); } -MP_INLINE static apr_status_t send_flush(ap_filter_t *f) +MP_INLINE static apr_status_t send_output_flush(ap_filter_t *f) { apr_bucket_alloc_t *ba = f-c-bucket_alloc; apr_bucket_brigade *bb = apr_brigade_create(MP_FILTER_POOL(f), @@ -199,11 +243,14 @@ /* unrolled APR_BRIGADE_FOREACH loop */ +#define MP_FILTER_EMPTY(filter) \ +APR_BRIGADE_EMPTY(filter-bb_in) + #define MP_FILTER_SENTINEL(filter) \ -APR_BRIGADE_SENTINEL(filter-bb) +APR_BRIGADE_SENTINEL(filter-bb_in) #define MP_FILTER_FIRST(filter) \ -APR_BRIGADE_FIRST(filter-bb) +APR_BRIGADE_FIRST(filter-bb_in) #define MP_FILTER_NEXT(filter) \ APR_BUCKET_NEXT(filter-bucket) @@ -216,52 +263,83 @@ MP_INLINE static int get_bucket(modperl_filter_t *filter) { -if (!filter-bb) { +if (!filter-bb_in || MP_FILTER_EMPTY(filter)) { +MP_TRACE_f(MP_FUNC, %s
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2003/01/11 18:33:28 Modified:xs/Apache/Filter Apache__Filter.h xs/maps modperl_functions.map xs/tables/current/ModPerl FunctionTable.pm Log: add $filter-seen_eos flag for the streaming interface Revision ChangesPath 1.21 +8 -0 modperl-2.0/xs/Apache/Filter/Apache__Filter.h Index: Apache__Filter.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/Filter/Apache__Filter.h,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- Apache__Filter.h 12 Jan 2003 02:31:54 - 1.20 +++ Apache__Filter.h 12 Jan 2003 02:33:27 - 1.21 @@ -125,3 +125,11 @@ return ctx-data ? SvREFCNT_inc(ctx-data) : PL_sv_undef; } + +static MP_INLINE SV *mpxs_Apache__Filter_seen_eos(pTHX_ I32 items, + SV **MARK, SV **SP) +{ +modperl_filter_t *modperl_filter; +mpxs_usage_va_1(modperl_filter, $filter-seen_eos()); +return modperl_filter-seen_eos ? PL_sv_yes : PL_sv_no; +} 1.48 +1 -0 modperl-2.0/xs/maps/modperl_functions.map Index: modperl_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- modperl_functions.map 12 Jan 2003 02:31:54 - 1.47 +++ modperl_functions.map 12 Jan 2003 02:33:27 - 1.48 @@ -74,6 +74,7 @@ mpxs_Apache__Filter_print | | ... mpxs_Apache__Filter_read | | ... + mpxs_Apache__Filter_seen_eos | | ... mpxs_Apache__Filter_ctx | | filter, data=Nullsv SV *:DEFINE_TIEHANDLE | | SV *:stashsv, SV *:sv=Nullsv 1.93 +26 -0 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.92 retrieving revision 1.93 diff -u -r1.92 -r1.93 --- FunctionTable.pm 12 Jan 2003 02:31:55 - 1.92 +++ FunctionTable.pm 12 Jan 2003 02:33:28 - 1.93 @@ -4892,6 +4892,32 @@ ] }, { +'return_type' = 'SV *', +'name' = 'mpxs_Apache__Filter_seen_eos', +'attr' = [ + 'static', + '__inline__' +], +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'I32', +'name' = 'items' + }, + { +'type' = 'SV **', +'name' = 'mark' + }, + { +'type' = 'SV **', +'name' = 'sp' + } +] + }, + { 'return_type' = 'void', 'name' = 'mpxs_Apache__Log_BOOT', 'attr' = [
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
stas2002/08/27 19:24:48 Modified:xs/APR/Bucket APR__Bucket.h xs/maps apr_functions.map xs/tables/current/ModPerl FunctionTable.pm Log: add the APR::Bucket::is_flush glue function Revision ChangesPath 1.5 +5 -0 modperl-2.0/xs/APR/Bucket/APR__Bucket.h Index: APR__Bucket.h === RCS file: /home/cvs/modperl-2.0/xs/APR/Bucket/APR__Bucket.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- APR__Bucket.h 30 May 2002 02:33:48 - 1.4 +++ APR__Bucket.h 28 Aug 2002 02:24:47 - 1.5 -44,6 +44,11 return APR_BUCKET_IS_EOS(bucket); } +static MP_INLINE int mpxs_APR__Bucket_is_flush(apr_bucket *bucket) +{ +return APR_BUCKET_IS_FLUSH(bucket); +} + static MP_INLINE void mpxs_APR__Bucket_insert_before(apr_bucket *a, apr_bucket *b) { 1.46 +1 -0 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- apr_functions.map 23 Jun 2002 22:00:03 - 1.45 +++ apr_functions.map 28 Aug 2002 02:24:47 - 1.46 -102,6 +102,7 mpxs_APR__Brigade_empty#APR_BRIGADE_EMPTY MODULE=APR::Bucket + mpxs_APR__Bucket_is_flush #APR_BUCKET_IS_FLUSH mpxs_APR__Bucket_is_eos #APR_BUCKET_IS_EOS mpxs_APR__Bucket_insert_after #APR_BUCKET_INSERT_AFTER mpxs_APR__Bucket_insert_before #APR_BUCKET_INSERT_AFTER 1.83 +15 -27modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.82 retrieving revision 1.83 diff -u -r1.82 -r1.83 --- FunctionTable.pm 27 Aug 2002 04:28:48 - 1.82 +++ FunctionTable.pm 28 Aug 2002 02:24:47 - 1.83 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Mon Aug 26 19:47:54 2002 +# ! Wed Aug 28 10:12:34 2002 # ! do NOT edit, any changes will be lost ! # !! -4343,6 +4343,20 ] }, { +'return_type' = 'int', +'name' = 'mpxs_APR__Bucket_is_flush', +'attr' = [ + 'static', + '__inline__' +], +'args' = [ + { +'type' = 'apr_bucket *', +'name' = 'bucket' + } +] + }, + { 'return_type' = 'apr_bucket *', 'name' = 'mpxs_APR__Bucket_new', 'attr' = [ -5507,32 +5521,6 { 'type' = 'SV *', 'name' = 'arg' - } -] - }, - { -'return_type' = 'apr_global_mutex_t *', -'name' = 'mpxs_apr_global_mutex_create', -'args' = [ - { -'type' = 'PerlInterpreter *', -'name' = 'my_perl' - }, - { -'type' = 'SV *', -'name' = 'classname' - }, - { -'type' = 'apr_pool_t *', -'name' = 'pool' - }, - { -'type' = 'const char *', -'name' = 'fname' - }, - { -'type' = 'apr_lockmech_e', -'name' = 'mech' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 2002/08/27 20:16:31 Modified:xs/tables/current/Apache FunctionTable.pm xs/tables/current/ModPerl FunctionTable.pm Log: sync Revision ChangesPath 1.40 +2 -2 modperl-2.0/xs/tables/current/Apache/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/Apache/FunctionTable.pm,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- FunctionTable.pm 24 Aug 2002 17:14:39 - 1.39 +++ FunctionTable.pm 28 Aug 2002 03:16:30 - 1.40 -2,7 +2,7 # !! # ! WARNING: generated by Apache::ParseSource/0.02 -# ! Sat Aug 24 09:38:51 2002 +# ! Tue Aug 27 20:02:27 2002 # ! do NOT edit, any changes will be lost ! # !! -7069,7 +7069,7 ] }, { -'return_type' = 'void', +'return_type' = 'apr_status_t', 'name' = 'apr_dbm_get_usednames_ex', 'args' = [ { 1.84 +97 -1 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.83 retrieving revision 1.84 diff -u -r1.83 -r1.84 --- FunctionTable.pm 28 Aug 2002 02:24:47 - 1.83 +++ FunctionTable.pm 28 Aug 2002 03:16:31 - 1.84 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Wed Aug 28 10:12:34 2002 +# ! Tue Aug 27 20:02:39 2002 # ! do NOT edit, any changes will be lost ! # !! -3701,6 +3701,20 ] }, { +'return_type' = 'void', +'name' = 'modperl_svptr_table_clear', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'PTR_TBL_t *', +'name' = 'tbl' + } +] + }, + { 'return_type' = 'PTR_TBL_t *', 'name' = 'modperl_svptr_table_clone', 'args' = [ -3751,6 +3765,84 ] }, { +'return_type' = 'void *', +'name' = 'modperl_svptr_table_fetch', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'PTR_TBL_t *', +'name' = 'tbl' + }, + { +'type' = 'void *', +'name' = 'sv' + } +] + }, + { +'return_type' = 'void', +'name' = 'modperl_svptr_table_free', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'PTR_TBL_t *', +'name' = 'tbl' + } +] + }, + { +'return_type' = 'PTR_TBL_t *', +'name' = 'modperl_svptr_table_new', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + } +] + }, + { +'return_type' = 'void', +'name' = 'modperl_svptr_table_split', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'PTR_TBL_t *', +'name' = 'tbl' + } +] + }, + { +'return_type' = 'void', +'name' = 'modperl_svptr_table_store', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'PTR_TBL_t *', +'name' = 'tbl' + }, + { +'type' = 'void *', +'name' = 'oldv' + }, + { +'type' = 'void *', +'name' = 'newv' + } +] + }, + { 'return_type' = 'int', 'name' = 'modperl_sys_dlclose', 'args' = [ -4532,6 +4624,10 { 'return_type' = 'SV *', 'name' = 'mpxs_Apache__Directive_as_string', +'attr' = [ + 'static', + '__inline__' +], 'args' = [ { 'type' = 'PerlInterpreter *',
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 2002/06/23 14:28:15 Modified:xs/maps apr_functions.map apr_types.map xs/tables/current/ModPerl FunctionTable.pm Log: add APR::ThreadMutex module Revision ChangesPath 1.44 +4 -3 modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- apr_functions.map 24 May 2002 17:47:27 - 1.43 +++ apr_functions.map 23 Jun 2002 21:28:14 - 1.44 -344,9 +344,10 -apr_proc_other_child_check -apr_proc_wait_all_procs -!MODULE=APR::ThreadMutex - apr_thread_mutex_create - apr_thread_mutex_destroy +MODULE=APR::ThreadMutex PREFIX=apr_thread_mutex_ + apr_thread_mutex_t *:apr_thread_mutex_create | mpxs_ | \ + SV *:classname, pool, flags=APR_THREAD_MUTEX_DEFAULT | new + void:apr_thread_mutex_destroy | | | apr_thread_mutex_DESTROY apr_thread_mutex_lock apr_thread_mutex_trylock apr_thread_mutex_unlock 1.19 +1 -1 modperl-2.0/xs/maps/apr_types.map Index: apr_types.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_types.map,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- apr_types.map 23 May 2002 19:49:49 - 1.18 +++ apr_types.map 23 Jun 2002 21:28:14 - 1.19 -100,7 +100,7 struct apr_thread_t | UNDEFINED apr_thread_start_t | UNDEFINED struct apr_threadattr_t | UNDEFINED -struct apr_thread_mutex_t| UNDEFINED +struct apr_thread_mutex_t| APR::ThreadMutex struct apr_thread_once_t | UNDEFINED struct apr_thread_cond_t | UNDEFINED struct apr_thread_rwlock_t | UNDEFINED 1.75 +27 -2 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- FunctionTable.pm 21 Jun 2002 03:04:36 - 1.74 +++ FunctionTable.pm 23 Jun 2002 21:28:15 - 1.75 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Thu Jun 20 19:51:30 2002 +# ! Sun Jun 23 13:55:55 2002 # ! do NOT edit, any changes will be lost ! # !! -3836,7 +3836,7 'name' = 'modperl_trace', 'args' = [ { -'type' = 'char *', +'type' = 'const char *', 'name' = 'func' }, { -5473,6 +5473,31 { 'type' = 'const char *', 'name' = 'val' + } +] + }, + { +'return_type' = '__inline__', +'name' = 'mpxs_apr_thread_mutex_create', +'attr' = [ + 'static' +], +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'SV *', +'name' = 'classname' + }, + { +'type' = 'apr_pool_t *', +'name' = 'pool' + }, + { +'type' = 'unsigned int', +'name' = 'flags' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 2002/06/20 17:07:25 Modified:xs/tables/current/ModPerl FunctionTable.pm Log: sync Revision ChangesPath 1.73 +11 -1 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- FunctionTable.pm 16 Jun 2002 01:09:18 - 1.72 +++ FunctionTable.pm 21 Jun 2002 00:07:24 - 1.73 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Sat Jun 15 17:57:19 2002 +# ! Thu Jun 20 16:54:53 2002 # ! do NOT edit, any changes will be lost ! # !! -3581,6 +3581,16 { 'type' = 'SV *', 'name' = 'sv' + } +] + }, + { +'return_type' = 'int', +'name' = 'modperl_sys_dlclose', +'args' = [ + { +'type' = 'void *', +'name' = 'handle' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 2002/06/20 20:04:36 Modified:xs/tables/current/ModPerl FunctionTable.pm Log: sync Revision ChangesPath 1.74 +4 -21 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.73 retrieving revision 1.74 diff -u -r1.73 -r1.74 --- FunctionTable.pm 21 Jun 2002 00:07:24 - 1.73 +++ FunctionTable.pm 21 Jun 2002 03:04:36 - 1.74 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Thu Jun 20 16:54:53 2002 +# ! Thu Jun 20 19:51:30 2002 # ! do NOT edit, any changes will be lost ! # !! -2275,10 +2275,6 'name' = 'modperl_interp_new', 'args' = [ { -'type' = 'apr_pool_t *', -'name' = 'p' - }, - { 'type' = 'modperl_interp_pool_t *', 'name' = 'mip' }, -2470,12 +2466,7 { 'return_type' = 'modperl_list_t *', 'name' = 'modperl_list_new', -'args' = [ - { -'type' = 'apr_pool_t *', -'name' = 'p' - } -] +'args' = [] }, { 'return_type' = 'modperl_list_t *', -3975,26 +3966,18 'name' = 'modperl_xs_dl_handles_close', 'args' = [ { -'type' = 'apr_pool_t *', -'name' = 'p' - }, - { -'type' = 'apr_array_header_t *', +'type' = 'void **', 'name' = 'handles' } ] }, { -'return_type' = 'apr_array_header_t *', +'return_type' = 'void **', 'name' = 'modperl_xs_dl_handles_get', 'args' = [ { 'type' = 'PerlInterpreter *', 'name' = 'my_perl' - }, - { -'type' = 'apr_pool_t *', -'name' = 'p' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 2002/06/15 18:09:18 Modified:xs/tables/current/ModPerl FunctionTable.pm Log: sync Revision ChangesPath 1.72 +54 -19modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.71 retrieving revision 1.72 diff -u -r1.71 -r1.72 --- FunctionTable.pm 3 Jun 2002 23:46:44 - 1.71 +++ FunctionTable.pm 16 Jun 2002 01:09:18 - 1.72 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Sat May 25 11:12:06 2002 +# ! Sat Jun 15 17:57:19 2002 # ! do NOT edit, any changes will be lost ! # !! -1355,6 +1355,11 ] }, { +'return_type' = 'void', +'name' = 'modperl_env_unload', +'args' = [] + }, + { 'return_type' = 'int', 'name' = 'modperl_errsv', 'args' = [ -2082,6 +2087,24 ] }, { +'return_type' = 'int', +'name' = 'modperl_hook_pre_config', +'args' = [ + { +'type' = 'apr_pool_t *', +'name' = 'p' + }, + { +'type' = 'apr_pool_t *', +'name' = 'plog' + }, + { +'type' = 'apr_pool_t *', +'name' = 'ptemp' + } +] + }, + { 'return_type' = 'void', 'name' = 'modperl_init', 'args' = [ -3175,6 +3198,36 ] }, { +'return_type' = 'void', +'name' = 'modperl_perl_pp_set', +'args' = [ + { +'type' = 'modperl_perl_opcode_e', +'name' = 'idx' + } +] + }, + { +'return_type' = 'void', +'name' = 'modperl_perl_pp_set_all', +'args' = [] + }, + { +'return_type' = 'void', +'name' = 'modperl_perl_pp_unset', +'args' = [ + { +'type' = 'modperl_perl_opcode_e', +'name' = 'idx' + } +] + }, + { +'return_type' = 'void', +'name' = 'modperl_perl_pp_unset_all', +'args' = [] + }, + { 'return_type' = 'SV *', 'name' = 'modperl_perl_sv_setref_uv', 'attr' = [ -3228,24 +3281,6 { 'type' = 'request_rec *', 'name' = 'r' - } -] - }, - { -'return_type' = 'int', -'name' = 'modperl_hook_pre_config', -'args' = [ - { -'type' = 'apr_pool_t *', -'name' = 'p' - }, - { -'type' = 'apr_pool_t *', -'name' = 'plog' - }, - { -'type' = 'apr_pool_t *', -'name' = 'ptemp' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 2002/06/03 16:46:44 Modified:xs/tables/current/ModPerl FunctionTable.pm Log: need to update pre_config hook namechange for win32 .def Revision ChangesPath 1.71 +2 -2 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.70 retrieving revision 1.71 diff -u -r1.70 -r1.71 --- FunctionTable.pm 30 May 2002 02:33:48 - 1.70 +++ FunctionTable.pm 3 Jun 2002 23:46:44 - 1.71 -3232,8 +3232,8 ] }, { -'return_type' = 'void', -'name' = 'modperl_pre_config_handler', +'return_type' = 'int', +'name' = 'modperl_hook_pre_config', 'args' = [ { 'type' = 'apr_pool_t *',
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 02/05/29 19:33:49 Modified:src/modules/perl modperl_filter.c modperl_filter.h xs/APR/Bucket APR__Bucket.h xs/Apache/RequestIO Apache__RequestIO.h xs/tables/current/ModPerl FunctionTable.pm Log: use apr_size_t rather than apr_ssize_t for apr_bucket_read (gets rid of some warnings on darwin) Revision ChangesPath 1.35 +10 -10modperl-2.0/src/modules/perl/modperl_filter.c Index: modperl_filter.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- modperl_filter.c 6 Apr 2002 01:19:15 - 1.34 +++ modperl_filter.c 30 May 2002 02:33:48 - 1.35 -3,7 +3,7 /* simple buffer api */ MP_INLINE apr_status_t modperl_wbucket_pass(modperl_wbucket_t *wb, -const char *buf, apr_ssize_t len) +const char *buf, apr_size_t len) { apr_bucket_alloc_t *ba = (*wb-filters)-c-bucket_alloc; apr_bucket_brigade *bb; -52,9 +52,9 MP_INLINE apr_status_t modperl_wbucket_write(modperl_wbucket_t *wb, const char *buf, - apr_ssize_t *wlen) + apr_size_t *wlen) { -apr_ssize_t len = *wlen; +apr_size_t len = *wlen; *wlen = 0; if ((len + wb-outcnt) sizeof(wb-outbuf)) { -226,13 +226,13 return 0; } -MP_INLINE apr_ssize_t modperl_output_filter_read(pTHX_ - modperl_filter_t *filter, - SV *buffer, - apr_ssize_t wanted) +MP_INLINE apr_size_t modperl_output_filter_read(pTHX_ +modperl_filter_t *filter, +SV *buffer, +apr_size_t wanted) { int num_buckets = 0; -apr_ssize_t len = 0; +apr_size_t len = 0; (void)SvUPGRADE(buffer, SVt_PV); SvPOK_only(buffer); -268,7 +268,7 while (1) { const char *buf; -apr_ssize_t buf_len; +apr_size_t buf_len; if (!get_bucket(filter)) { break; -361,7 +361,7 MP_INLINE apr_status_t modperl_output_filter_write(modperl_filter_t *filter, const char *buf, - apr_ssize_t *len) + apr_size_t *len) { return modperl_wbucket_write(filter-wbucket, buf, len); } 1.14 +7 -7 modperl-2.0/src/modules/perl/modperl_filter.h Index: modperl_filter.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_filter.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- modperl_filter.h 6 Apr 2002 01:19:15 - 1.13 +++ modperl_filter.h 30 May 2002 02:33:48 - 1.14 -12,13 +12,13 /* simple buffer api */ MP_INLINE apr_status_t modperl_wbucket_pass(modperl_wbucket_t *b, -const char *buf, apr_ssize_t len); +const char *buf, apr_size_t len); MP_INLINE apr_status_t modperl_wbucket_flush(modperl_wbucket_t *b); MP_INLINE apr_status_t modperl_wbucket_write(modperl_wbucket_t *b, const char *buf, - apr_ssize_t *wlen); + apr_size_t *wlen); /* generic filter routines */ -43,14 +43,14 MP_INLINE apr_status_t modperl_output_filter_flush(modperl_filter_t *filter); -MP_INLINE apr_ssize_t modperl_output_filter_read(pTHX_ - modperl_filter_t *filter, - SV *buffer, - apr_ssize_t wanted); +MP_INLINE apr_size_t modperl_output_filter_read(pTHX_ +modperl_filter_t *filter, +SV *buffer, +apr_size_t wanted); MP_INLINE apr_status_t modperl_output_filter_write(modperl_filter_t *filter, const char *buf, - apr_ssize_t *len); +
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 02/05/23 22:13:08 Modified:xs/tables/current/ModPerl FunctionTable.pm Log: sync Revision ChangesPath 1.68 +26 -1 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.67 retrieving revision 1.68 diff -u -r1.67 -r1.68 --- FunctionTable.pm 22 May 2002 16:30:40 - 1.67 +++ FunctionTable.pm 24 May 2002 05:13:07 - 1.68 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Wed May 22 09:10:46 2002 +# ! Thu May 23 22:06:43 2002 # ! do NOT edit, any changes will be lost ! # !! -3171,6 +3171,31 { 'type' = 'const char *', 'name' = 'name' + } +] + }, + { +'return_type' = 'SV *', +'name' = 'modperl_perl_sv_setref_uv', +'attr' = [ + '__inline__' +], +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'SV *', +'name' = 'rv' + }, + { +'type' = 'const char *', +'name' = 'classname' + }, + { +'type' = 'UV', +'name' = 'uv' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 02/05/22 09:30:40 Modified:t/apr.cvsignore xs/maps apr_functions.map apr_types.map xs/tables/current/ModPerl FunctionTable.pm Log: add APR::OS::thread_current function Revision ChangesPath 1.5 +1 -0 modperl-2.0/t/apr/.cvsignore Index: .cvsignore === RCS file: /home/cvs/modperl-2.0/t/apr/.cvsignore,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- .cvsignore6 Mar 2002 05:24:57 - 1.4 +++ .cvsignore22 May 2002 16:30:40 - 1.5 -9,3 +9,4 table.t util.t uuid.t +os.t 1.41 +25 -25modperl-2.0/xs/maps/apr_functions.map Index: apr_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_functions.map,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- apr_functions.map 19 May 2002 23:59:52 - 1.40 +++ apr_functions.map 22 May 2002 16:30:40 - 1.41 -591,28 +591,28 apr_xlate_get_sb apr_xlate_open --MODULE=APR::OS - apr_os_dir_get - apr_os_exp_time_get - apr_os_file_get - apr_os_imp_time_get - apr_os_sock_get - apr_os_thread_get - apr_os_threadkey_get - apr_os_sock_make - apr_os_dir_put - apr_os_exp_time_put - apr_os_file_put - apr_os_imp_time_put - apr_os_sock_put - apr_os_thread_put - apr_os_threadkey_put - apr_os_dso_handle_get - apr_os_dso_handle_put - apr_os_thread_current - apr_os_thread_equal - apr_os_global_mutex_get - apr_os_proc_mutex_get - apr_os_proc_mutex_put - apr_os_shm_get - apr_os_shm_put +MODULE=APR::OS +-apr_os_dir_get +-apr_os_exp_time_get +-apr_os_file_get +-apr_os_imp_time_get +-apr_os_sock_get +-apr_os_thread_get +-apr_os_threadkey_get +-apr_os_sock_make +-apr_os_dir_put +-apr_os_exp_time_put +-apr_os_file_put +-apr_os_imp_time_put +-apr_os_sock_put +-apr_os_thread_put +-apr_os_threadkey_put +-apr_os_dso_handle_get +-apr_os_dso_handle_put + apr_os_thread_current | | mpxs_ +-apr_os_thread_equal +-apr_os_global_mutex_get +-apr_os_proc_mutex_get +-apr_os_proc_mutex_put +-apr_os_shm_get +-apr_os_shm_put 1.17 +1 -1 modperl-2.0/xs/maps/apr_types.map Index: apr_types.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apr_types.map,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- apr_types.map 19 May 2002 01:05:30 - 1.16 +++ apr_types.map 22 May 2002 16:30:40 - 1.17 -96,7 +96,7 #thread stuff struct apr_threadkey_t | UNDEFINED struct apr_os_threadkey_t| UNDEFINED -struct apr_os_thread_t | UNDEFINED +struct apr_os_thread_t | PTR struct apr_thread_t | UNDEFINED apr_thread_start_t | UNDEFINED struct apr_threadattr_t | UNDEFINED 1.67 +15 -1 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.66 retrieving revision 1.67 diff -u -r1.66 -r1.67 --- FunctionTable.pm 21 May 2002 02:50:16 - 1.66 +++ FunctionTable.pm 22 May 2002 16:30:40 - 1.67 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Mon May 20 19:15:12 2002 +# ! Wed May 22 09:10:46 2002 # ! do NOT edit, any changes will be lost ! # !! -5195,6 +5195,20 { 'type' = 'const char *', 'name' = 'mask_or_numbits' + } +] + }, + { +'return_type' = 'apr_os_thread_t', +'name' = 'mpxs_apr_os_thread_current', +'attr' = [ + 'static', + '__inline__' +], +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 02/05/19 13:11:56 Modified:xs/maps apache_functions.map apache_structures.map modperl_functions.map xs/tables/current/ModPerl FunctionTable.pm Log: wrap $r-content_type(foo/bar) so ap_set_content_type is called underneath Revision ChangesPath 1.51 +1 -1 modperl-2.0/xs/maps/apache_functions.map Index: apache_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apache_functions.map,v retrieving revision 1.50 retrieving revision 1.51 diff -u -r1.50 -r1.51 --- apache_functions.map 19 May 2002 01:05:30 - 1.50 +++ apache_functions.map 19 May 2002 20:11:55 - 1.51 -49,7 +49,7 ap_rgetline_core ?ap_get_request_note ?ap_register_request_note - ap_set_content_type +~ap_set_content_type #MODULE=Apache::RequestConfig ap_document_root 1.15 +1 -1 modperl-2.0/xs/maps/apache_structures.map Index: apache_structures.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apache_structures.map,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- apache_structures.map 19 May 2002 01:05:30 - 1.14 +++ apache_structures.map 19 May 2002 20:11:55 - 1.15 -40,7 +40,7 err_headers_out subprocess_env notes - content_type +~ content_type handler content_encoding content_languages 1.37 +3 -0 modperl-2.0/xs/maps/modperl_functions.map Index: modperl_functions.map === RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- modperl_functions.map 10 May 2002 17:48:27 - 1.36 +++ modperl_functions.map 19 May 2002 20:11:55 - 1.37 -8,6 +8,9 mpxs_ModPerl__Global_special_list_call mpxs_ModPerl__Global_special_list_clear +MODULE=Apache::RequestRec PACKAGE=Apache::RequestRec + mpxs_Apache__RequestRec_content_type | | r, type=Nullsv + MODULE=Apache::RequestUtil PACKAGE=guess mpxs_Apache__RequestRec_push_handlers mpxs_Apache__RequestRec_set_handlers 1.64 +19 -1 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v retrieving revision 1.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- FunctionTable.pm 18 May 2002 23:56:54 - 1.63 +++ FunctionTable.pm 19 May 2002 20:11:55 - 1.64 -2,7 +2,7 # !! # ! WARNING: generated by ModPerl::ParseSource/0.01 -# ! Sat May 18 16:46:32 2002 +# ! Sun May 19 12:59:55 2002 # ! do NOT edit, any changes will be lost ! # !! -4366,6 +4366,24 { 'type' = 'request_rec *', 'name' = 'r' + } +] + }, + { +'return_type' = 'const char *', +'name' = 'mpxs_Apache__RequestRec_content_type', +'args' = [ + { +'type' = 'PerlInterpreter *', +'name' = 'my_perl' + }, + { +'type' = 'request_rec *', +'name' = 'r' + }, + { +'type' = 'SV *', +'name' = 'type' } ] },
cvs commit: modperl-2.0/xs/tables/current/ModPerl FunctionTable.pm
dougm 02/03/29 08:16:21 Modified:xs/tables/current/Apache ConstantsTable.pm FunctionTable.pm StructureTable.pm xs/tables/current/ModPerl FunctionTable.pm Log: sync Revision ChangesPath 1.23 +12 -1 modperl-2.0/xs/tables/current/Apache/ConstantsTable.pm Index: ConstantsTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/Apache/ConstantsTable.pm,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- ConstantsTable.pm 10 Mar 2002 00:17:05 - 1.22 +++ ConstantsTable.pm 29 Mar 2002 16:16:20 - 1.23 -2,7 +2,7 # !! # ! WARNING: generated by Apache::ParseSource/0.02 -# ! Sat Mar 9 16:13:55 2002 +# ! Fri Mar 29 06:55:58 2002 # ! do NOT edit, any changes will be lost ! # !! -59,6 +59,17 'M_MOVE', 'M_LOCK', 'M_UNLOCK', + 'M_VERSION_CONTROL', + 'M_CHECKOUT', + 'M_UNCHECKOUT', + 'M_CHECKIN', + 'M_UPDATE', + 'M_LABEL', + 'M_REPORT', + 'M_MKWORKSPACE', + 'M_MKACTIVITY', + 'M_BASELINE_CONTROL', + 'M_MERGE', 'M_INVALID', 'METHODS' ], 1.35 +301 -43 modperl-2.0/xs/tables/current/Apache/FunctionTable.pm Index: FunctionTable.pm === RCS file: /home/cvs/modperl-2.0/xs/tables/current/Apache/FunctionTable.pm,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- FunctionTable.pm 10 Mar 2002 00:17:05 - 1.34 +++ FunctionTable.pm 29 Mar 2002 16:16:20 - 1.35 -2,7 +2,7 # !! # ! WARNING: generated by Apache::ParseSource/0.02 -# ! Sat Mar 9 16:14:02 2002 +# ! Fri Mar 29 06:55:29 2002 # ! do NOT edit, any changes will be lost ! # !! -195,6 +195,16 }, { 'return_type' = 'void', +'name' = 'ap_add_output_filters_by_type', +'args' = [ + { +'type' = 'request_rec *', +'name' = 'r' + } +] + }, + { +'return_type' = 'void', 'name' = 'ap_add_per_dir_conf', 'args' = [ { -340,6 +350,10 { 'type' = 'apr_pool_t *', 'name' = 'p' + }, + { +'type' = 'apr_bucket_alloc_t *', +'name' = 'list' } ] }, -2964,6 +2978,10 'name' = 'ap_method_name_of', 'args' = [ { +'type' = 'apr_pool_t *', +'name' = 'p' + }, + { 'type' = 'int', 'name' = 'methnum' } -3620,6 +3638,20 ] }, { +'return_type' = 'apr_status_t', +'name' = 'ap_recent_ctime', +'args' = [ + { +'type' = 'char *', +'name' = 'date_str' + }, + { +'type' = 'apr_time_t', +'name' = 't' + } +] + }, + { 'return_type' = 'void', 'name' = 'ap_reclaim_child_processes', 'args' = [ -3854,7 +3886,7 }, { 'return_type' = 'apr_status_t', -'name' = 'ap_rgetline', +'name' = 'ap_rgetline_core', 'args' = [ { 'type' = 'char **', -4005,6 +4037,10 { 'type' = 'void *', 'name' = 'sbh' + }, + { +'type' = 'apr_bucket_alloc_t *', +'name' = 'alloc' } ] }, -4286,6 +4322,10 { 'type' = 'request_rec *', 'name' = 'r' + }, + { +'type' = 'int', +'name' = 'lookup_uri' } ] }, -4413,6 +4453,24 }, { 'return_type' = 'int', +'name' = 'ap_scan_script_header_err_brigade', +'args' = [ + { +'type' = 'request_rec *', +'name' = 'r' + }, + { +'type' = 'apr_bucket_brigade *', +'name' = 'bb' + }, + { +'type' = 'char *', +'name' = 'buffer' + } +] + }, + { +'return_type' = 'int', 'name' = 'ap_scan_script_header_err_core', 'args' = [ { -4570,6 +4628,20 ] }, { +'return_type' = 'void', +'name' = 'ap_set_content_type', +'args' = [ + { +'type' = 'request_rec *', +'name' = 'r' + }, + { +'type' = 'const char *', +'name' = 'ct' + } +] + }, + { 'return_type' = 'const char *', 'name' = 'ap_set_deprecated', 'args' = [ -5276,6