cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 02/03/09 16:14:23 Modified:xs/maps apache_functions.map Log: Submitted by: Philippe M. Chiasson <[EMAIL PROTECTED]> Reviewed by: dougm fix $r->no_cache Revision ChangesPath 1.45 +0 -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.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- apache_functions.map 26 Feb 2002 19:04:24 - 1.44 +++ apache_functions.map 10 Mar 2002 00:14:23 - 1.45 @@ -42,7 +42,6 @@ !ap_content_type_tolower ap_get_status_line ap_is_initial_req - mpxs_Apache__RequestRec_no_cache ap_method_register >ap_method_registry_init >ap_process_request_internal
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 02/02/26 11:04:25 Modified:xs/maps apache_functions.map Log: call the modperl wrapper for ap_run_sub_req Revision ChangesPath 1.44 +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.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- apache_functions.map 25 Jan 2002 04:04:22 - 1.43 +++ apache_functions.map 26 Feb 2002 19:04:24 - 1.44 @@ -81,7 +81,7 @@ PACKAGE=Apache::SubRequest ISA=Apache::RequestRec ap_destroy_sub_req | | r | DESTROY - ap_run_sub_req | | r | run + ap_run_sub_req | mpxs_ | | run MODULE=Apache::RequestIO PACKAGE=Apache::RequestRec ap_discard_request_body
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 02/01/24 20:04:22 Modified:src/modules/perl modperl_filter.c modperl_filter.h xs/Apache/Filter Apache__Filter.h xs/maps apache_functions.map Log: adjust to ap_get_brigade() API change Revision ChangesPath 1.31 +3 -3 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.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- modperl_filter.c 20 Jan 2002 18:37:04 - 1.30 +++ modperl_filter.c 25 Jan 2002 04:04:22 - 1.31 @@ -116,7 +116,7 @@ int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode, apr_read_type_e block, - apr_off_t *readbytes) + apr_off_t readbytes) { AV *args = Nullav; int status; @@ -140,7 +140,7 @@ if (filter->mode == MP_INPUT_FILTER_MODE) { av_push(args, newSViv(mode)); av_push(args, newSViv(block)); -av_push(args, newSViv(*readbytes)); +av_push(args, newSViv(readbytes)); } if ((status = modperl_callback(aTHX_ handler, p, r, s, args)) != OK) { @@ -394,7 +394,7 @@ apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, - apr_off_t *readbytes) + apr_off_t readbytes) { modperl_filter_t *filter; int status; 1.12 +2 -2 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.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- modperl_filter.h 20 Jan 2002 18:37:04 - 1.11 +++ modperl_filter.h 25 Jan 2002 04:04:22 - 1.12 @@ -28,7 +28,7 @@ int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode, apr_read_type_e block, - apr_off_t *readbytes); + apr_off_t readbytes); /* output filters */ apr_status_t modperl_output_filter_handler(ap_filter_t *f, @@ -56,7 +56,7 @@ apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, - apr_off_t *readbytes); + apr_off_t readbytes); void modperl_input_filter_register_connection(conn_rec *c); 1.18 +0 -17 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.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- Apache__Filter.h 20 Jan 2002 18:37:05 - 1.17 +++ Apache__Filter.h 25 Jan 2002 04:04:22 - 1.18 @@ -60,23 +60,6 @@ return len; } -static apr_status_t mpxs_ap_get_brigade(pTHX_ ap_filter_t *filter, -apr_bucket_brigade *brigade, -ap_input_mode_t mode, -apr_read_type_e block, -SV *svreadbytes) -{ -apr_off_t readbytes = svreadbytes ? SvIV(svreadbytes) : 0; -apr_status_t status = ap_get_brigade(filter, brigade, - mode, block, &readbytes); - -if (svreadbytes) { -sv_setiv(svreadbytes, readbytes); -} - -return status; -} - static MP_INLINE U32 *modperl_filter_attributes(SV *package, SV *cvrv) { return (U32 *)&MP_CODE_ATTRS(SvRV(cvrv)); 1.43 +2 -2 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.42 retrieving revision 1.43 diff -u -r1.42 -r1.43 --- apache_functions.map 21 Jan 2002 08:27:30 - 1.42 +++ apache_functions.map 25 Jan 2002 04:04:22 - 1.43 @@ -203,10 +203,10 @@ PACKAGE=guess ~ap_add_output_filter ~ap_add_input_filter - ap_get_brigade | mpxs_ | \ + ap_get_brigade | | \ filter, bucket, mode=AP_MODE_READBYTES, \ block=APR_BLOCK_READ, \ -
cvs commit: modperl-2.0/xs/maps apache_functions.map modperl_functions.map
stas02/01/21 00:27:30 Modified:xs/Apache/Response Apache__Response.h xs/maps apache_functions.map modperl_functions.map Log: - write a wrapper for $r->set_last_modified() to be the same as in 1.x - specify default values for $r->set_content_length and $r->update_mtime as in 1.x Revision ChangesPath 1.6 +9 -0 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.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Apache__Response.h6 Jan 2002 22:23:24 - 1.5 +++ Apache__Response.h21 Jan 2002 08:27:30 - 1.6 @@ -25,3 +25,12 @@ rcfg->wbucket->header_parse = 0; /* turn off PerlOptions +ParseHeaders */ } + +static MP_INLINE void +mpxs_Apache__RequestRec_set_last_modified(request_rec *r, apr_time_t mtime) +{ +if (mtime) { +ap_update_mtime(r, mtime); +} +ap_set_last_modified(r); +} 1.42 +3 -3 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.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- apache_functions.map 20 Jan 2002 18:37:05 - 1.41 +++ apache_functions.map 21 Jan 2002 08:27:30 - 1.42 @@ -100,16 +100,16 @@ MODULE=Apache::Response PACKAGE=guess ap_make_etag | | r, force_weak=0 - ap_set_content_length + ap_set_content_length | | r, length=r->finfo.csize ap_set_etag ap_meets_conditions ap_rationalize_mtime - ap_update_mtime + ap_update_mtime | | r, dependency_mtime=0 ap_send_error_response ~ap_send_fd ap_send_mmap | | r, mm, offset, length ap_set_keepalive - ap_set_last_modified +-ap_set_last_modified ap_custom_response MODULE=Apache::Access PACKAGE=Apache::RequestRec 1.33 +2 -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.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- modperl_functions.map 8 Jan 2002 22:48:38 - 1.32 +++ modperl_functions.map 21 Jan 2002 08:27:30 - 1.33 @@ -43,6 +43,8 @@ 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 + MODULE=Apache::ServerUtil PACKAGE=guess mpxs_Apache__Server_push_handlers
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 02/01/20 10:37:05 Modified:src/modules/perl modperl_filter.c modperl_filter.h t/filter/TestFilter input_body.pm input_msg.pm t/protocol/TestProtocol echo_filter.pm xs/Apache/Filter Apache__Filter.h xs/maps apache_functions.map Log: adjust to ap_get_brigade and input filter api changes Revision ChangesPath 1.30 +7 -3 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.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- modperl_filter.c 8 Jan 2002 00:04:33 - 1.29 +++ modperl_filter.c 20 Jan 2002 18:37:04 - 1.30 @@ -113,7 +113,9 @@ return mg ? (modperl_filter_t *)mg->mg_ptr : NULL; } -int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode, +int modperl_run_filter(modperl_filter_t *filter, + ap_input_mode_t mode, + apr_read_type_e block, apr_off_t *readbytes) { AV *args = Nullav; @@ -137,6 +139,7 @@ if (filter->mode == MP_INPUT_FILTER_MODE) { av_push(args, newSViv(mode)); +av_push(args, newSViv(block)); av_push(args, newSViv(*readbytes)); } @@ -374,7 +377,7 @@ } else { filter = modperl_filter_new(f, bb, MP_OUTPUT_FILTER_MODE); -status = modperl_run_filter(filter, 0, 0); +status = modperl_run_filter(filter, 0, 0, 0); } switch (status) { @@ -390,6 +393,7 @@ apr_status_t modperl_input_filter_handler(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, + apr_read_type_e block, apr_off_t *readbytes) { modperl_filter_t *filter; @@ -402,7 +406,7 @@ } else { filter = modperl_filter_new(f, bb, MP_INPUT_FILTER_MODE); -status = modperl_run_filter(filter, mode, readbytes); +status = modperl_run_filter(filter, mode, block, readbytes); } switch (status) { 1.11 +4 -1 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.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- modperl_filter.h 9 Aug 2001 16:52:51 - 1.10 +++ modperl_filter.h 20 Jan 2002 18:37:04 - 1.11 @@ -25,7 +25,9 @@ modperl_filter_t *modperl_filter_mg_get(pTHX_ SV *obj); -int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode, +int modperl_run_filter(modperl_filter_t *filter, + ap_input_mode_t mode, + apr_read_type_e block, apr_off_t *readbytes); /* output filters */ @@ -53,6 +55,7 @@ apr_status_t modperl_input_filter_handler(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, + apr_read_type_e block, apr_off_t *readbytes); void modperl_input_filter_register_connection(conn_rec *c); 1.9 +2 -2 modperl-2.0/t/filter/TestFilter/input_body.pm Index: input_body.pm === RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/input_body.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- input_body.pm 21 Dec 2001 11:30:38 - 1.8 +++ input_body.pm 20 Jan 2002 18:37:05 - 1.9 @@ -11,11 +11,11 @@ use APR::Bucket (); sub handler : FilterRequestHandler { -my($filter, $bb, $mode, $readbytes) = @_; +my($filter, $bb, $mode, $block, $readbytes) = @_; my $ctx_bb = APR::Brigade->new($filter->r->pool); -my $rv = $filter->next->get_brigade($ctx_bb, $mode, $readbytes); +my $rv = $filter->next->get_brigade($ctx_bb, $mode, $block, $readbytes); if ($rv != APR::SUCCESS) { return $rv; 1.9 +2 -2 modperl-2.0/t/filter/TestFilter/input_msg.pm Index: input_msg.pm === RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/input_msg.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- input_msg.pm 21 Dec 2001 11:30:38 - 1.8 +++ input_msg.pm 20 Jan 2002 18:37:05 - 1.9 @
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/12/04 14:42:29 Modified:xs/maps apache_functions.map Log: properly default next_filter for subrequest methods to r->output_filters->next rather than NULL Revision ChangesPath 1.40 +3 -3 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.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- apache_functions.map 2001/11/19 23:46:48 1.39 +++ apache_functions.map 2001/12/04 22:42:29 1.40 @@ -71,13 +71,13 @@ ap_sub_req_lookup_dirent subrequest_rec *:ap_sub_req_lookup_file | | \ - r, new_file, next_filter=NULL | lookup_file + r, new_file, next_filter=r->output_filters->next | lookup_file subrequest_rec *:ap_sub_req_lookup_uri | | \ - r, new_file, next_filter=NULL | lookup_uri + r, new_file, next_filter=r->output_filters->next | lookup_uri subrequest_rec *:ap_sub_req_method_uri | | \ - r, method, new_file, next_filter=NULL | lookup_method_uri + r, method, new_file, next_filter=r->output_filters->next | lookup_method_uri PACKAGE=Apache::SubRequest ISA=Apache::RequestRec ap_destroy_sub_req | | r | DESTROY
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/11/19 15:46:48 Modified:xs/Apache/ServerUtil Apache__ServerUtil.h xs/maps apache_functions.map Log: add Apache::server_root constant Revision ChangesPath 1.8 +6 -0 modperl-2.0/xs/Apache/ServerUtil/Apache__ServerUtil.h Index: Apache__ServerUtil.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/ServerUtil/Apache__ServerUtil.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- Apache__ServerUtil.h 2001/11/19 23:32:00 1.7 +++ Apache__ServerUtil.h 2001/11/19 23:46:48 1.8 @@ -50,3 +50,9 @@ return ap_server_root_relative(p, fname); } + +static void mpxs_Apache__ServerUtil_BOOT(pTHX) +{ +newCONSTSUB(PL_defstash, "Apache::server_root", +newSVpv(ap_server_root, 0)); +} 1.39 +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.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- apache_functions.map 2001/11/19 23:32:00 1.38 +++ apache_functions.map 2001/11/19 23:46:48 1.39 @@ -138,7 +138,7 @@ -ap_scan_script_header_err_core -ap_scan_script_header_err_strs -MODULE=Apache::ServerUtil PACKAGE=guess +MODULE=Apache::ServerUtil PACKAGE=guess BOOT=1 ap_add_version_component ap_construct_server ap_construct_url | | r,uri,p
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/11/12 14:42:28 Modified:t/response/TestAPI server_util.pm xs/Apache/ServerUtil Apache__ServerUtil.h xs/maps apache_functions.map Log: default Apache::server_root_relative() fname to "" Revision ChangesPath 1.2 +9 -5 modperl-2.0/t/response/TestAPI/server_util.pm Index: server_util.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/server_util.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- server_util.pm2001/11/12 22:39:04 1.1 +++ server_util.pm2001/11/12 22:42:28 1.2 @@ -14,15 +14,19 @@ my $s = $r->server; -plan $r, tests => 2; +plan $r, tests => 3; -my $t_dir = Apache::server_root_relative('conf', $r->pool); +my $dir = Apache::server_root_relative('conf', $r->pool); -ok -d $t_dir; +ok -d $dir; -$t_dir = Apache::server_root_relative('logs'); +$dir = Apache::server_root_relative('logs'); -ok -d $t_dir; +ok -d $dir; + +$dir = Apache::server_root_relative(); + +ok -d $dir; Apache::OK; } 1.6 +4 -0 modperl-2.0/xs/Apache/ServerUtil/Apache__ServerUtil.h Index: Apache__ServerUtil.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/ServerUtil/Apache__ServerUtil.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Apache__ServerUtil.h 2001/11/12 22:38:27 1.5 +++ Apache__ServerUtil.h 2001/11/12 22:42:28 1.6 @@ -46,6 +46,10 @@ const char *fname, apr_pool_t *p) { +if (!fname) { +fname = ""; +} + if (!p) { /* XXX: should do something better if called at request time * without a pool 1.37 +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.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- apache_functions.map 2001/11/12 22:38:27 1.36 +++ apache_functions.map 2001/11/12 22:42:28 1.37 @@ -152,7 +152,7 @@ ap_get_server_built ap_get_server_version ap_psignature | | r,prefix - ap_server_root_relative | mpxs_ | fname, p=NULL + ap_server_root_relative | mpxs_ | fname=NULL, p=NULL MODULE=Apache::Connection PACKAGE=guess ap_get_remote_host
cvs commit: modperl-2.0/xs/maps apache_functions.map modperl_functions.map
dougm 01/11/06 10:41:46 Modified:todo api.txt xs/Apache/RequestIO Apache__RequestIO.h xs/maps apache_functions.map modperl_functions.map Log: add Apache::RequestIO::{printf,PRINTF} methods Revision ChangesPath 1.13 +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.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- api.txt 2001/10/29 01:19:16 1.12 +++ api.txt 2001/11/06 18:41:46 1.13 @@ -3,7 +3,7 @@ -- tied filehandle interface: - -CLOSE, GETC, PRINTF, READLINE + -CLOSE, GETC, READLINE $r->finfo: need apr_finfo_t <-> struct stat conversion (might already be there, 1.18 +30 -1 modperl-2.0/xs/Apache/RequestIO/Apache__RequestIO.h Index: Apache__RequestIO.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/RequestIO/Apache__RequestIO.h,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- Apache__RequestIO.h 2001/11/06 17:50:56 1.17 +++ Apache__RequestIO.h 2001/11/06 18:41:46 1.18 @@ -1,7 +1,8 @@ #define mpxs_Apache__RequestRec_TIEHANDLE(stashsv, sv) \ modperl_newSVsv_obj(aTHX_ stashsv, sv) -#define mpxs_Apache__RequestRec_PRINT mpxs_Apache__RequestRec_print +#define mpxs_Apache__RequestRec_PRINT mpxs_Apache__RequestRec_print +#define mpxs_Apache__RequestRec_PRINTF mpxs_ap_rprintf #define mpxs_output_flush(r, rcfg) \ /* if ($|) */ \ @@ -55,6 +56,34 @@ mpxs_output_flush(r, rcfg); +return bytes; +} + +static MP_INLINE +apr_size_t mpxs_ap_rprintf(pTHX_ I32 items, SV **MARK, SV **SP) +{ +modperl_config_req_t *rcfg; +request_rec *r; +apr_size_t bytes = 0; +SV *sv; + +mpxs_usage_va(2, r, "$r->printf($fmt, ...)"); + +rcfg = modperl_config_req_get(r); + +/* XXX: we could have an rcfg->sprintf_buffer to reuse this SV + * across requests + */ +sv = newSV(0); +modperl_perl_do_sprintf(aTHX_ sv, items, MARK); +bytes = SvCUR(sv); + +modperl_wbucket_write(&rcfg->wbucket, SvPVX(sv), &bytes); + +mpxs_output_flush(r, rcfg); + +SvREFCNT_dec(sv); + return bytes; } 1.35 +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.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- apache_functions.map 2001/10/22 02:46:55 1.34 +++ apache_functions.map 2001/11/06 18:41:46 1.35 @@ -92,7 +92,7 @@ ap_rflush PREFIX=ap_r ~ap_rwrite -~ap_rprintf + ap_rprintf | mpxs_ | ... !ap_rputc ~ap_rputs ap_rvputs | mpxs_ | ... | puts 1.26 +3 -2 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.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- modperl_functions.map 2001/10/29 01:19:16 1.25 +++ modperl_functions.map 2001/11/06 18:41:46 1.26 @@ -25,8 +25,9 @@ mpxs_Apache_request | | classname, svr=Nullsv MODULE=Apache::RequestIO PACKAGE=Apache::RequestRec - SV *:DEFINE_TIEHANDLE | | SV *:stashsv, SV *:sv=Nullsv - apr_size_t:DEFINE_PRINT | | ... + SV *:DEFINE_TIEHANDLE| | SV *:stashsv, SV *:sv=Nullsv + apr_size_t:DEFINE_PRINT | | ... + apr_size_t:DEFINE_PRINTF | | ... mpxs_Apache__RequestRec_sendfile | | r, filename=r->filename, offset=0, len=0 mpxs_Apache__RequestRec_read | | r, buffer, bufsiz, offset=0 long:DEFINE_READ | | request_rec *:r, SV *:buffer, int:bufsiz, int:offset=0
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/10/21 19:46:55 Modified:xs/maps apache_functions.map Log: ap_get_local_host is not exported Revision ChangesPath 1.34 +3 -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.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- apache_functions.map 2001/10/22 01:54:02 1.33 +++ apache_functions.map 2001/10/22 02:46:55 1.34 @@ -146,7 +146,9 @@ #MODULE=Apache::ServerConfig ap_exists_config_define - ap_get_local_host +#XXX: thought this might be useful +#however it is not exported on win32 +!ap_get_local_host ap_get_server_built ap_get_server_version ap_psignature | | r,prefix
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/10/21 18:54:02 Modified:xs/maps apache_functions.map Log: disable Apache::Connection::read_request (not available on all platforms) Revision ChangesPath 1.33 +3 -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.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- apache_functions.map 2001/10/07 19:22:49 1.32 +++ apache_functions.map 2001/10/22 01:54:02 1.33 @@ -154,7 +154,9 @@ MODULE=Apache::Connection PACKAGE=guess ap_get_remote_host - ap_read_request +#XXX: thought this might be useful for protocol modules +#however it is not exported on win32 +!ap_read_request >ap_update_vhost_given_ip MODULE=Apache::Log PACKAGE=guess
cvs commit: modperl-2.0/xs/maps apache_functions.map apr_functions.map
dougm 01/10/07 12:22:49 Modified:lib/ModPerl TypeMap.pm xs/Apache/Filter Apache__Filter.h xs/maps apache_functions.map apr_functions.map Log: remove ModPerl::TypeMap::first_class guessing based on return_type Revision ChangesPath 1.11 +0 -2 modperl-2.0/lib/ModPerl/TypeMap.pm Index: TypeMap.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/TypeMap.pm,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- TypeMap.pm2001/09/15 18:17:31 1.10 +++ TypeMap.pm2001/10/07 19:22:49 1.11 @@ -266,8 +266,6 @@ sub first_class { my($self, $func) = @_; -return $func->{return_type} if $func->{return_type} =~ /::/; - for my $e (@{ $func->{args} }) { next unless $e->{type} =~ /::/; #there are alot of util functions that take an APR::Pool 1.15 +3 -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.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- Apache__Filter.h 2001/08/30 01:08:24 1.14 +++ Apache__Filter.h 2001/10/07 19:22:49 1.15 @@ -1,6 +1,9 @@ #define mpxs_Apache__RequestRec_add_output_filter(r, name, ctx) \ ap_add_output_filter(name, ctx, r, NULL) +#define mpxs_Apache__RequestRec_add_input_filter(r, name, ctx) \ +ap_add_output_filter(name, ctx, r, NULL) + #define mp_xs_sv2_modperl_filter(sv) \ ((SvROK(sv) && (SvTYPE(SvRV(sv)) == SVt_PVMG)) \ || (Perl_croak(aTHX_ "argument is not a blessed reference"),0) ? \ 1.32 +3 -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.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- apache_functions.map 2001/10/06 01:03:27 1.31 +++ apache_functions.map 2001/10/07 19:22:49 1.32 @@ -193,10 +193,12 @@ MODULE=Apache::Filter PACKAGE=Apache::RequestRec ap_filter_t *:DEFINE_add_output_filter | | \ request_rec *:r, const char *:name, void *:ctx +ap_filter_t *:DEFINE_add_input_filter | | \ + request_rec *:r, const char *:name, void *:ctx PACKAGE=guess ~ap_add_output_filter - ap_add_input_filter +~ap_add_input_filter ap_get_brigade | mpxs_ | \ filter, bucket, mode=AP_MODE_NONBLOCKING, SV *:readbytes=Nullsv ap_pass_brigade 1.24 +1 -1 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.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- apr_functions.map 2001/09/28 17:20:32 1.23 +++ apr_functions.map 2001/10/07 19:22:49 1.24 @@ -454,7 +454,7 @@ apr_getnameinfo -apr_getservbyname apr_parse_addr_port -PACKAGE=guess +PACKAGE=APR::IpSubnet apr_ipsubnet_t *:apr_ipsubnet_create | mpxs_ | \ SV *:CLASS, p, ipstr, mask_or_numbits=NULL | new apr_ipsubnet_test
cvs commit: modperl-2.0/xs/maps apache_functions.map apr_functions.map
dougm 01/09/16 18:06:08 Modified:xs/maps apache_functions.map apr_functions.map Log: mark some functions that will not be available via Perl Revision ChangesPath 1.30 +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.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- apache_functions.map 2001/09/10 04:56:13 1.29 +++ apache_functions.map 2001/09/17 01:06:08 1.30 @@ -410,7 +410,7 @@ ap_run_log_transaction >ap_run_rewrite_args ap_run_create_request - ap_run_error_log +>ap_run_error_log >ap_run_get_mgmt_items ap_run_map_to_storage >ap_run_pre_mpm 1.21 +3 -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.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- apr_functions.map 2001/09/17 00:38:07 1.20 +++ apr_functions.map 2001/09/17 01:06:08 1.21 @@ -75,7 +75,7 @@ apr_brigade_destroy !apr_brigade_partition apr_brigade_printf - apr_brigade_putstrs +-apr_brigade_putstrs apr_brigade_split -apr_brigade_to_iovec -apr_brigade_vprintf @@ -83,7 +83,7 @@ !apr_brigade_length apr_brigade_write apr_brigade_puts - apr_brigade_putc +-apr_brigade_putc !apr_brigade_cleanup mpxs_APR__Brigade_first#APR_BRIGADE_FIRST mpxs_APR__Brigade_last #APR_BRIGADE_LAST @@ -159,7 +159,7 @@ apr_pool_get_abort apr_pool_get_parent apr_pool_is_ancestor - apr_pool_set_abort +-apr_pool_set_abort MODULE=APR::Lock !apr_lock_child_init
cvs commit: modperl-2.0/xs/maps apache_functions.map apr_functions.map
dougm 01/09/09 21:56:14 Modified:xs/maps apache_functions.map apr_functions.map Log: update function maps wrt current httpd-2.0 Revision ChangesPath 1.29 +73 -6 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.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- apache_functions.map 2001/09/08 18:26:46 1.28 +++ apache_functions.map 2001/09/10 04:56:13 1.29 @@ -36,7 +36,6 @@ MODULE=Apache::RequestUtil PACKAGE=guess >ap_finalize_request_protocol -?ap_default_port_for_request ap_default_type ap_get_server_name ap_get_server_port @@ -44,6 +43,9 @@ ap_get_status_line ap_is_initial_req mpxs_Apache__RequestRec_no_cache + ap_method_register +>ap_method_registry_init +>ap_process_request_internal #MODULE=Apache::RequestConfig ap_document_root @@ -51,12 +53,22 @@ ?ap_get_limit_xml_body >ap_core_translate +>MODULE=Apache::Core + ap_basic_http_header + ap_dechunk_filter + ap_http_filter + ap_send_http_options + ap_send_http_trace + ap_response_code_string + MODULE=Apache::SubRequest PACKAGE=Apache::RequestRec ?ap_sub_req_output_filter >ap_set_sub_req_protocol -ap_finalize_sub_req_protocol ap_internal_redirect | | r, new_uri ap_internal_redirect_handler | | r, new_uri + ap_internal_fast_redirect + ap_sub_req_lookup_dirent subrequest_rec *:ap_sub_req_lookup_file | | \ r, new_file, next_filter=NULL | lookup_file @@ -144,7 +156,6 @@ ap_get_remote_host ap_read_request >ap_update_vhost_given_ip - ap_new_connection MODULE=Apache::Log PACKAGE=guess ?ap_log_assert @@ -191,6 +202,7 @@ ap_register_input_filter ap_register_output_filter ap_remove_output_filter + ap_remove_input_filter !ap_save_brigade ap_filter_flush ap_fflush @@ -218,7 +230,6 @@ ap_pcfg_open_custom ap_pcfg_openfile >ap_read_config ->ap_create_request_config >ap_merge_per_dir_configs >ap_create_conn_config >ap_parse_htaccess @@ -228,14 +239,15 @@ command_rec *:DEFINE_next | | command_rec *:cmd ap_check_cmd_context ap_soak_end_container +-ap_set_int_slot -ap_set_file_slot -ap_set_flag_slot -ap_set_string_slot -ap_set_string_slot_lower +-ap_set_deprecated MODULE=Apache::Util ap_ht_time - ap_parseHTTPdate !ap_rfc1413 ap_escape_html #escape_uri @@ -249,7 +261,6 @@ mpxs_Apache__RequestRec_parsed_uri !MODULE=Apache::StringUtil PACKAGE=guess - ap_checkmask ap_count_dirs ap_escape_path_segment ap_escape_quotes @@ -313,8 +324,13 @@ -ap_create_scoreboard ap_cleanup_scoreboard ap_increment_counts + ap_get_parent_scoreboard + ap_get_servers_scoreboard !MODULE=Apache::Hooks + ap_location_walk + ap_directory_walk + ap_file_walk ap_hook_access_checker ap_hook_auth_checker ap_hook_check_user_id @@ -335,7 +351,40 @@ ap_hook_process_connection ap_hook_translate_name ap_hook_type_checker + ap_hook_quick_handler + ap_hook_map_to_storage + ap_hook_create_request + ap_hook_error_log +>ap_hook_pre_mpm -ap_hook_get_suexec_identity +-ap_hook_get_access_checker +-ap_hook_get_auth_checker +-ap_hook_get_check_user_id +-ap_hook_get_child_init +-ap_hook_get_create_request +-ap_hook_get_default_port +-ap_hook_get_error_log +-ap_hook_get_fixups +-ap_hook_get_get_mgmt_items +-ap_hook_get_get_suexec_identity +-ap_hook_get_handler +-ap_hook_get_header_parser +-ap_hook_get_http_method +-ap_hook_get_insert_filter +-ap_hook_get_log_transaction +-ap_hook_get_map_to_storage +-ap_hook_get_mgmt_items +-ap_hook_get_open_logs +-ap_hook_get_optional_fn_retrieve +-ap_hook_get_post_config +-ap_hook_get_post_read_request +-ap_hook_get_pre_config +-ap_hook_get_pre_connection +-ap_hook_get_pre_mpm +-ap_hook_get_process_connection +-ap_hook_get_quick_handler +-ap_hook_get_translate_name +-ap_hook_get_type_checker MODULE=Apache::HookRun PACKAGE=guess -ap_run_get_suexec_identity @@ -359,7 +408,13 @@ ap_run_fixups ap_run_handler ap_run_log_transaction - ap_run_rewrite_args +>ap_run_rewrite_args + ap_run_create_request + ap_run_error_log +>ap_run_get_mgmt_items + ap_run_map_to_storage +>ap_run_pre_mpm + ap_run_quick_handler ap_invoke_handler ap_die @@ -406,3 +461,15 @@ ap_gname2id ap_uname2id ap_lingering_close + ap_mpm_pod_check + ap_mpm_pod_close + ap_mpm_pod_killpg + ap_mpm_pod_open + ap_mpm_pod_signal + ap_mpm_set_accept_lock_mech + ap_mpm_set_coredumpdir + ap_mpm_set_lockfile + ap_mpm_set_max_requests + ap_mpm_set_pidfile + ap_mpm_set_scoreboard +?ap_show_mpm
cvs commit: modperl-2.0/xs/maps apache_functions.map apr_functions.map
dougm 01/07/31 19:06:06 Modified:xs/maps apache_functions.map apr_functions.map Log: adjust to recent api changes Revision ChangesPath 1.27 +0 -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.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- apache_functions.map 2001/05/22 20:57:58 1.26 +++ apache_functions.map 2001/08/01 02:06:06 1.27 @@ -95,7 +95,6 @@ ap_send_error_response ~ap_send_fd ap_send_mmap | | r, mm, offset, length - ap_send_size ap_set_keepalive ap_set_last_modified ap_custom_response 1.15 +1 -1 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.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- apr_functions.map 2001/07/15 22:26:01 1.14 +++ apr_functions.map 2001/08/01 02:06:06 1.15 @@ -71,7 +71,7 @@ -apr_brigade_to_iovec -apr_brigade_vprintf -apr_brigade_vputstrs - apr_brigade_length +!apr_brigade_length apr_brigade_write apr_brigade_puts apr_brigade_putc
cvs commit: modperl-2.0/xs/maps apache_functions.map modperl_functions.map
dougm 01/05/02 23:21:00 Modified:xs/maps apache_functions.map modperl_functions.map Added: t/response/TestAPI aplog.pm xs/Apache/Log Apache__Log.h Log: add Apache::Log api and tests Revision ChangesPath 1.1 modperl-2.0/t/response/TestAPI/aplog.pm Index: aplog.pm === package TestAPI::aplog; use strict; use warnings FATAL => 'all'; use Apache::Log (); use Apache::Test; my @LogLevels = qw(emerg alert crit error warn notice info debug); my $package = __PACKAGE__; sub handler { my $r = shift; plan $r, tests => (@LogLevels * 2) + 3; my $rlog = $r->log; ok $rlog->isa('Apache::Log::Request'); my $slog = $r->server->log; ok $slog->isa('Apache::Log::Server'); $rlog->info($package, " test in progress"); for my $method (@LogLevels) { #wrap in sub {}, else Test.pm tries to run the return value of ->can ok sub { $rlog->can($method) }; ok sub { $slog->can($method) }; } $slog->info(sub { ok 1; "$package test done" }); Apache::OK; } 1; 1.1 modperl-2.0/xs/Apache/Log/Apache__Log.h Index: Apache__Log.h === static void mpxs_Apache__Log_BOOT(pTHXo) { av_push(get_av("Apache::Log::Request::ISA",TRUE), newSVpv("Apache::Log",11)); av_push(get_av("Apache::Log::Server::ISA",TRUE), newSVpv("Apache::Log",11)); } #define croak_inval_obj() \ Perl_croak(aTHX_ "Argument is not an Apache::RequestRec " \ "or Apache::Server object") static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg) { char *file = NULL; int line = 0; char *str; SV *svstr = Nullsv; STRLEN n_a; int lmask = level & APLOG_LEVELMASK; server_rec *s; request_rec *r = NULL; if (SvROK(sv) && sv_isa(sv, "Apache::Log::Request")) { r = (request_rec *)SvObjIV(sv); s = r->server; } else if (SvROK(sv) && sv_isa(sv, "Apache::Log::Server")) { s = (server_rec *)SvObjIV(sv); } else { croak_inval_obj(); } if ((lmask == APLOG_DEBUG) && (s->loglevel >= APLOG_DEBUG)) { COP *cop = cxstack[1].blk_oldcop; file = CopFILE(cop); /* (caller)[1] */ line = CopLINE(cop); /* (caller)[2] */ } if ((s->loglevel >= lmask) && SvROK(msg) && (SvTYPE(SvRV(msg)) == SVt_PVCV)) { dSP; ENTER;SAVETMPS; PUSHMARK(sp); (void)call_sv(msg, G_SCALAR); SPAGAIN; svstr = POPs; (void)SvREFCNT_inc(svstr); PUTBACK; FREETMPS;LEAVE; str = SvPV(svstr,n_a); } else { str = SvPV(msg,n_a); } if (r) { ap_log_rerror(file, line, APLOG_NOERRNO|level, 0, r, "%s", str); } else { ap_log_error(file, line, APLOG_NOERRNO|level, 0, s, "%s", str); } if (svstr) { SvREFCNT_dec(svstr); } } #define MP_LOG_REQUEST 1 #define MP_LOG_SERVER 2 static SV *mpxs_Apache__Log_log(pTHX_ SV *sv, int logtype) { SV *svretval; void *retval; char *pclass; if (!SvROK(sv)) { Perl_croak(aTHX_ "Argument is not a reference"); } switch (logtype) { case MP_LOG_REQUEST: pclass = "Apache::Log::Request"; retval = (void *)modperl_sv2request_rec(aTHX_ sv); break; case MP_LOG_SERVER: pclass = "Apache::Log::Server"; retval = (void *)SvObjIV(sv); break; default: croak_inval_obj(); }; svretval = newSV(0); sv_setref_pv(svretval, pclass, (void*)retval); return svretval; } #define mpxs_Apache__RequestRec_log(sv) \ mpxs_Apache__Log_log(aTHX_ sv, MP_LOG_REQUEST) #define mpxs_Apache__Server_log(sv) \ mpxs_Apache__Log_log(aTHX_ sv, MP_LOG_SERVER) static XS(MPXS_Apache__Log_dispatch) { dXSARGS; SV *msgsv; int level; char *name = GvNAME(CvGV(cv)); if (items < 2) { Perl_croak(aTHX_ "usage: %s::%s(obj, ...)", mpxs_cv_name()); } if (items > 2) { msgsv = newSV(0); do_join(msgsv, &PL_sv_no, MARK+1, SP); } else { msgsv = ST(1); (void)SvREFCNT_inc(msgsv); } switch (*name) { case 'e': if (*(name + 1) == 'r') { level = APLOG_ERR; break; } level = APLOG_EMERG; break; case 'w': level = APLOG_WARNING; break; case 'n': level = APLOG_NOTICE; break; case 'i': level = APLOG_INFO;
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/04/28 15:35:23 Modified:lib/ModPerl TypeMap.pm WrapXS.pm src/modules/perl modperl_util.c modperl_util.h xs modperl_xs_util.h xs/maps apache_functions.map Added: t/response/TestAPI uri.pm xs/Apache/URI Apache__URI.h Log: add Apache::URI interface and tests Revision ChangesPath 1.6 +6 -4 modperl-2.0/lib/ModPerl/TypeMap.pm Index: TypeMap.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/TypeMap.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- TypeMap.pm2001/03/16 00:26:29 1.5 +++ TypeMap.pm2001/04/28 22:35:18 1.6 @@ -332,10 +332,12 @@ } #XXX: generate this -my %class_pools = ( -'Apache::RequestRec' => '.pool', -'Apache::Connection' => '.pool', -); +my %class_pools = map { +(my $f = "mpxs_${_}_pool") =~ s/:/_/g; +$_, $f; +} qw{ + Apache::RequestRec Apache::Connection Apache::URI +}; sub class_pool : lvalue { my($self, $class) = @_; 1.9 +1 -1 modperl-2.0/lib/ModPerl/WrapXS.pm Index: WrapXS.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- WrapXS.pm 2001/04/20 18:03:45 1.8 +++ WrapXS.pm 2001/04/28 22:35:19 1.9 @@ -150,7 +150,7 @@ if ($e->{class} eq 'PV') { if (my $pool = $e->{pool}) { -$pool =~ s/^\./obj->/; +$pool .= '(obj)'; $val = "((ST(1) == &PL_sv_undef) ? NULL : (SvPOK(ST(1)) ? apr_pstrndup($pool, SvPVX(ST(1)), SvCUR(ST(1))) : 1.10 +40 -0 modperl-2.0/src/modules/perl/modperl_util.c Index: modperl_util.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_util.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- modperl_util.c2001/04/25 05:27:17 1.9 +++ modperl_util.c2001/04/28 22:35:20 1.10 @@ -66,6 +66,46 @@ return sv; } +apr_pool_t *modperl_sv2pool(pTHX_ SV *obj) +{ +char *classname; + +if (!(SvROK(obj) && (SvTYPE(SvRV(obj)) == SVt_PVMG))) { +return NULL; +} + +classname = SvCLASS(obj); + +if (*classname != 'A') { +return NULL; +} + +if (strnEQ(classname, "APR::", 5)) { +classname += 5; +switch (*classname) { + case 'P': +if (strEQ(classname, "Pool")) { +return (apr_pool_t *)SvObjIV(obj); +} + default: +return NULL; +}; +} +else if (strnEQ(classname, "Apache::", 8)) { +classname += 8; +switch (*classname) { + case 'R': +if (strEQ(classname, "RequestRec")) { +return ((request_rec *)SvObjIV(obj))->pool; +} + default: +return NULL; +}; +} + +return NULL; +} + char *modperl_apr_strerror(apr_status_t rv) { dTHX; 1.11 +8 -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.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- modperl_util.h2001/04/25 05:27:17 1.10 +++ modperl_util.h2001/04/28 22:35:20 1.11 @@ -14,11 +14,19 @@ # define strncaseEQ(s1,s2,l) (!strncasecmp(s1,s2,l)) #endif +#ifndef SvCLASS +#define SvCLASS(o) HvNAME(SvSTASH(SvRV(o))) +#endif + +#define SvObjIV(o) SvIV((SV*)SvRV(o)) + MP_INLINE request_rec *modperl_sv2request_rec(pTHX_ SV *sv); MP_INLINE SV *modperl_newSVsv_obj(pTHX_ SV *stashsv, SV *obj); MP_INLINE SV *modperl_ptr2obj(pTHX_ char *classname, void *ptr); + +apr_pool_t *modperl_sv2pool(pTHX_ SV *obj); #define modperl_bless_request_rec(r) \ modperl_ptr2obj("Apache", r) 1.1 modperl-2.0/t/response/TestAPI/uri.pm Index: uri.pm === package TestAPI::uri; use strict; use warnings FATAL => 'all'; use Apache::URI (); use Apache::RequestUtil (); use Apache::Test; my $location = '/' . __PACKAGE__; sub handler { my $r = shift; plan $r, tests => 12; $r->args('query'); my $uri = $r->parsed_uri; ok $uri->isa('Apache::URI'); ok $uri->path =~ m:^$location:; my $up = $uri->unparse; ok $up =~ m:^$location:;
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/04/28 12:29:45 Modified:lib/Apache compat.pm xs/maps apache_functions.map Added: t/apisend_fd.t t/response/TestAPI send_fd.pm Log: add send_fd compat method and tests Revision ChangesPath 1.3 +34 -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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- compat.pm 2001/04/20 03:07:53 1.2 +++ compat.pm 2001/04/28 19:29:39 1.3 @@ -112,5 +112,39 @@ return \$data; } +use constant IOBUFSIZE => 8192; + +#XXX: howto convert PerlIO to apr_file_t +#so we can use the real ap_send_fd function +#2.0 ap_send_fd() also has an additional offset parameter + +sub send_fd_length { +my($r, $fh, $length) = @_; + +my $buff; +my $total_bytes_sent = 0; +my $len; + +return 0 if $length == 0; + +if (($length > 0) && ($total_bytes_send + IOBUFSIZE) > $length) { +$len = $length - $total_bytes_sent; +} +else { +$len = IOBUFSIZE; +} + +while (read($fh, $buff, $len)) { +$total_bytes_sent += $r->puts($buff); +} + +$total_bytes_sent; +} + +sub send_fd { +my($r, $fh) = @_; +$r->send_fd_length($fh, -1); +} + 1; __END__ 1.1 modperl-2.0/t/api/send_fd.t Index: send_fd.t === use strict; use warnings FATAL => 'all'; use Test; use Apache::TestConfig (); plan tests => 3; my $config = Apache::TestConfig->thaw; my $url = '/TestAPI::send_fd'; my $data = $config->http_raw_get($url); ok $data; my $module = 'response/TestAPI/send_fd.pm'; ok length($data) == -s $module; $data = $config->http_raw_get("$url?noexist.txt"); ok $data =~ /Not Found/; 1.1 modperl-2.0/t/response/TestAPI/send_fd.pm Index: send_fd.pm === package TestAPI::send_fd; use strict; use warnings FATAL => 'all'; use Apache::compat (); sub handler { my $r = shift; my $file = $r->args || __FILE__; open my $fh, $file or return Apache::NOT_FOUND; my $bytes = $r->send_fd($fh); return Apache::SERVER_ERROR unless $bytes == -s $file; Apache::OK; } 1; 1.14 +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.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- apache_functions.map 2001/04/24 02:26:19 1.13 +++ apache_functions.map 2001/04/28 19:29:44 1.14 @@ -94,7 +94,7 @@ ap_rationalize_mtime ap_update_mtime ap_send_error_response - ap_send_fd +~ap_send_fd ap_send_mmap ap_send_size ap_set_keepalive
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/04/23 19:26:19 Modified:src/modules/perl modperl_filter.c modperl_filter.h t/filter/TestFilter input_body.pm input_msg.pm xs/Apache/Filter Apache__Filter.h xs/maps apache_functions.map Log: adjust to ap_get_brigade() / input filter api changes Revision ChangesPath 1.17 +7 -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.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- modperl_filter.c 2001/04/20 00:43:47 1.16 +++ modperl_filter.c 2001/04/24 02:26:17 1.17 @@ -86,7 +86,8 @@ return mg ? (modperl_filter_t *)mg->mg_ptr : NULL; } -int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode) +int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode, + apr_size_t *readbytes) { AV *args = Nullav; int status; @@ -109,6 +110,7 @@ if (filter->mode == MP_INPUT_FILTER_MODE) { av_push(args, newSViv(mode)); +av_push(args, newSViv(*readbytes)); } if ((status = modperl_callback(aTHX_ handler, p, s, args)) != OK) { @@ -321,7 +323,7 @@ } else { filter = modperl_filter_new(f, bb, MP_OUTPUT_FILTER_MODE); -status = modperl_run_filter(filter, 0); +status = modperl_run_filter(filter, 0, 0); } switch (status) { @@ -336,7 +338,8 @@ apr_status_t modperl_input_filter_handler(ap_filter_t *f, apr_bucket_brigade *bb, - ap_input_mode_t mode) + ap_input_mode_t mode, + apr_size_t *readbytes) { modperl_filter_t *filter; int status; @@ -348,7 +351,7 @@ } else { filter = modperl_filter_new(f, bb, MP_INPUT_FILTER_MODE); -status = modperl_run_filter(filter, mode); +status = modperl_run_filter(filter, mode, readbytes); } switch (status) { 1.6 +4 -2 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.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- modperl_filter.h 2001/04/20 00:43:47 1.5 +++ modperl_filter.h 2001/04/24 02:26:17 1.6 @@ -25,7 +25,8 @@ modperl_filter_t *modperl_filter_mg_get(pTHX_ SV *obj); -int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode); +int modperl_run_filter(modperl_filter_t *filter, ap_input_mode_t mode, + apr_size_t *readbytes); /* output filters */ apr_status_t modperl_output_filter_handler(ap_filter_t *f, @@ -49,7 +50,8 @@ /* input filters */ apr_status_t modperl_input_filter_handler(ap_filter_t *f, apr_bucket_brigade *bb, - ap_input_mode_t mode); + ap_input_mode_t mode, + apr_size_t *readbytes); int modperl_input_filter_register_connection(conn_rec *c); 1.4 +2 -2 modperl-2.0/t/filter/TestFilter/input_body.pm Index: input_body.pm === RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/input_body.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- input_body.pm 2001/04/20 01:21:28 1.3 +++ input_body.pm 2001/04/24 02:26:17 1.4 @@ -13,10 +13,10 @@ use APR::Bucket (); sub handler : InputFilterBody { -my($filter, $bb, $mode) = @_; +my($filter, $bb, $mode, $readbytes) = @_; if ($bb->empty) { -my $rv = $filter->next->get_brigade($bb, $mode); +my $rv = $filter->next->get_brigade($bb, $mode, $readbytes); if ($rv != APR::SUCCESS) { return $rv; 1.4 +2 -2 modperl-2.0/t/filter/TestFilter/input_msg.pm Index: input_msg.pm === RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/input_msg.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- input_msg.pm 2001/04/20 01:21:28 1.3 +++ input_msg.pm 2001/04/24 02:26:17 1.4 @@ -14,10 +14,10 @@ my $to_url = '/TestFilter::input_msg::response'; sub handler : InputFilterMessage { -my($filter, $bb, $mode) = @_; +my($filter, $bb, $mode, $readbytes) = @_;
cvs commit: modperl-2.0/xs/maps apache_functions.map apache_types.map apr_functions.map apr_types.map modperl_functions.map modperl_types.map
dougm 01/04/19 10:41:47 Modified:xs/maps apache_functions.map apache_types.map apr_functions.map apr_types.map modperl_functions.map modperl_types.map Log: glue new methods Revision ChangesPath 1.12 +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.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- apache_functions.map 2001/04/12 04:57:19 1.11 +++ apache_functions.map 2001/04/19 17:41:38 1.12 @@ -186,7 +186,7 @@ PACKAGE=guess ~ap_add_output_filter ap_add_input_filter - ap_get_brigade + ap_get_brigade | | filter, bucket, mode=AP_MODE_NONBLOCKING ap_pass_brigade ap_register_input_filter ap_register_output_filter 1.3 +1 -5 modperl-2.0/xs/maps/apache_types.map Index: apache_types.map === RCS file: /home/cvs/modperl-2.0/xs/maps/apache_types.map,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- apache_types.map 2001/04/04 17:12:08 1.2 +++ apache_types.map 2001/04/19 17:41:39 1.3 @@ -34,11 +34,7 @@ ap_filter_func | UNDEFINED ap_out_filter_func | UNDEFINED ap_in_filter_func | UNDEFINED -ap_input_mode_t | UNDEFINED - -## Perl types ## - -SV * | SV +ap_input_mode_t | IV ## Standard types ## 1.8 +3 -1 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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- apr_functions.map 2001/04/18 05:10:43 1.7 +++ apr_functions.map 2001/04/19 17:41:40 1.8 @@ -82,6 +82,7 @@ mpxs_APR__Brigade_insert_tail #APR_BRIGADE_INSERT_TAIL mpxs_APR__Brigade_insert_head #APR_BRIGADE_INSERT_HEAD mpxs_APR__Brigade_concat #APR_BRIGADE_CONCAT + mpxs_APR__Brigade_empty#APR_BRIGADE_EMPTY MODULE=APR::Bucket mpxs_APR__Bucket_is_eos #APR_BUCKET_IS_EOS @@ -89,7 +90,8 @@ mpxs_APR__Bucket_insert_before #APR_BUCKET_INSERT_AFTER mpxs_APR__Bucket_remove #APR_BUCKET_REMOVE #apr_bucket_read - mpxs_APR__Bucket_read | | bucket, wanted=0 + modperl_bucket_read | mpxs_ | \ +bucket, SV *:buffer, block=APR_BLOCK_READ | read #modperl_bucket_sv_create mpxs_APR__Bucket_new | | classname, sv, offset=0, len=0 !apr_bucket_copy_notimpl 1.4 +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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- apr_types.map 2001/04/18 05:10:43 1.3 +++ apr_types.map 2001/04/19 17:41:40 1.4 @@ -23,7 +23,7 @@ struct apr_bucket_brigade | APR::Brigade apr_brigade_flush | UNDEFINED struct apr_bucket_type_t| APR::BucketType -apr_read_type_e | UNDEFINED +apr_read_type_e | IV apr_bucket_file | UNDEFINED apr_bucket_pool | UNDEFINED apr_bucket_heap | UNDEFINED 1.3 +4 -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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- modperl_functions.map 2001/04/13 07:17:08 1.2 +++ modperl_functions.map 2001/04/19 17:41:41 1.3 @@ -19,7 +19,10 @@ mpxs_Apache__Server_set_handlers mpxs_Apache__Server_get_handlers -MODULE=Apache::Filter PACKAGE=Apache::OutputFilter +MODULE=Apache::Filter +modperl_filter_attributes | MPXS_ | ... | MODIFY_CODE_ATTRIBUTES + +PACKAGE=Apache::OutputFilter mpxs_Apache__OutputFilter_print | | ... mpxs_Apache__OutputFilter_read | | ... ap_filter_t *:DEFINE_f | | modperl_filter_t *:filter 1.2 +9 -0 modperl-2.0/xs/maps/modperl_types.map Index: modperl_types.map === RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_types.map,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- modperl_types.map 2001/04/18 04:44:02 1.1 +++ modperl_types.map 2001/04/19 17:41:42 1.2 @@ -1 +1,10 @@ +## mod_perl types ## + struct modperl_filter_t | Apache::OutputFi
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/04/11 21:57:19 Modified:t/hooks/TestHooks authen.pm xs/Apache/Access Apache__Access.h xs/maps apache_functions.map Log: implement $r->requires Revision ChangesPath 1.4 +5 -1 modperl-2.0/t/hooks/TestHooks/authen.pm Index: authen.pm === RCS file: /home/cvs/modperl-2.0/t/hooks/TestHooks/authen.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- authen.pm 2001/04/11 23:05:48 1.3 +++ authen.pm 2001/04/12 04:57:19 1.4 @@ -4,7 +4,7 @@ use warnings FATAL => 'all'; use Apache::Access (); -use Apache::Const -compile => qw(OK AUTH_REQUIRED); +use Apache::Const -compile => qw(OK AUTH_REQUIRED SERVER_ERROR); sub handler { my $r = shift; @@ -14,6 +14,10 @@ return $rc if $rc != Apache::OK; my $user = $r->user; + +my $requirement = $r->requires->[0]->{requirement}; + +return Apache::SERVER_ERROR unless $requirement eq 'valid-user'; unless ($user eq 'dougm' and $sent_pw eq 'foo') { $r->note_basic_auth_failure; 1.2 +35 -0 modperl-2.0/xs/Apache/Access/Apache__Access.h Index: Apache__Access.h === RCS file: /home/cvs/modperl-2.0/xs/Apache/Access/Apache__Access.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Apache__Access.h 2001/04/02 19:30:35 1.1 +++ Apache__Access.h 2001/04/12 04:57:19 1.2 @@ -22,3 +22,38 @@ } }); } + +static MP_INLINE SV *mpxs_ap_requires(pTHX_ request_rec *r) +{ +AV *av; +HV *hv; +register int x; +const apr_array_header_t *reqs_arr = ap_requires(r); +require_line *reqs; + +if (!reqs_arr) { +return &PL_sv_undef; +} + +reqs = (require_line *)reqs_arr->elts; +av = newAV(); + +for (x=0; x < reqs_arr->nelts; x++) { +/* XXX should we do this or let PerlAuthzHandler? */ +if (! (reqs[x].method_mask & (1 << r->method_number))) { +continue; +} + +hv = newHV(); + +hv_store(hv, "method_mask", 11, + newSViv((IV)reqs[x].method_mask), 0); + +hv_store(hv, "requirement", 11, + newSVpv(reqs[x].requirement,0), 0); + +av_push(av, newRV_noinc((SV*)hv)); +} + +return newRV_noinc((SV*)av); +} 1.11 +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.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- apache_functions.map 2001/04/10 04:01:15 1.10 +++ apache_functions.map 2001/04/12 04:57:19 1.11 @@ -106,7 +106,7 @@ ap_allow_options ap_allow_overrides ap_get_remote_logname -!ap_requires + SV *:ap_requires | mpxs_ ap_satisfies #MODULE=Apache::Auth
cvs commit: modperl-2.0/xs/maps apache_functions.map apr_functions.map
dougm 01/04/09 21:01:15 Modified:xs/maps apache_functions.map apr_functions.map Log: remove functions that no longer exist Revision ChangesPath 1.10 +0 -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.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- apache_functions.map 2001/04/04 17:12:07 1.9 +++ apache_functions.map 2001/04/10 04:01:15 1.10 @@ -247,7 +247,6 @@ ap_parse_hostinfo_components ap_unescape_url ap_unparse_uri_components ->ap_util_uri_init !MODULE=Apache::StringUtil PACKAGE=guess ap_checkmask 1.5 +0 -1 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.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- apr_functions.map 2001/03/16 00:01:36 1.4 +++ apr_functions.map 2001/04/10 04:01:15 1.5 @@ -165,7 +165,6 @@ -apr_file_dup -apr_file_flush -apr_file_eof --apr_file_error -apr_file_gets -apr_file_printf -apr_file_write_full
cvs commit: modperl-2.0/xs/maps apache_functions.map apache_types.map
dougm 01/04/04 10:12:08 Modified:lib/ModPerl FunctionMap.pm WrapXS.pm src/modules/perl modperl_types.h xs/maps apache_functions.map apache_types.map Added: t/response/TestAPI lookup_uri.pm Log: get subrequest api working and add a little test for lookup_uri Revision ChangesPath 1.5 +3 -0 modperl-2.0/lib/ModPerl/FunctionMap.pm Index: FunctionMap.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/FunctionMap.pm,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- FunctionMap.pm2001/03/16 02:29:41 1.4 +++ FunctionMap.pm2001/04/04 17:12:07 1.5 @@ -134,6 +134,9 @@ unless ($package eq 'guess') { $cur{CLASS} = $package; } +if ($cur{ISA}) { +$self->{isa}->{ $cur{MODULE} }->{$package} = delete $cur{ISA}; +} } else { $cur{CLASS} = $cur{MODULE}; 1.4 +20 -1 modperl-2.0/lib/ModPerl/WrapXS.pm Index: WrapXS.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- WrapXS.pm 2001/03/13 07:09:28 1.3 +++ WrapXS.pm 2001/04/04 17:12:07 1.4 @@ -334,6 +334,23 @@ $class_prefix . $name; } +sub isa_str { +my($self, $module) = @_; +my $str = ""; + +if (my $isa = $self->typemap->{function_map}->{isa}->{$module}) { +while (my($sub, $base) = each %$isa) { +#XXX cannot set isa in the BOOT: section because XSLoader local-ises +#ISA during bootstrap +#$str .= qq{av_push(get_av("$sub\::ISA", TRUE), +# newSVpv("$base",0));} +$str .= qq{\@$sub\::ISA = '$base';\n} +} +} + +$str; +} + sub write_xs { my($self, $module, $functions) = @_; @@ -398,12 +415,14 @@ sub write_pm { my($self, $module) = @_; +my $isa = $self->isa_str($module); + my $fh = $self->open_class_file($module, '.pm'); print $fh <{noedit_warning_hash} package $module; - +$isa use XSLoader (); XSLoader::load __PACKAGE__; 1.32 +1 -0 modperl-2.0/src/modules/perl/modperl_types.h Index: modperl_types.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- modperl_types.h 2001/04/04 05:12:54 1.31 +++ modperl_types.h 2001/04/04 17:12:07 1.32 @@ -9,6 +9,7 @@ /* aliases */ +typedef request_rec subrequest_rec; typedef apr_array_header_t MpAV; typedef apr_table_tMpHV; 1.1 modperl-2.0/t/response/TestAPI/lookup_uri.pm Index: lookup_uri.pm === package TestAPI::lookup_uri; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::SubRequest (); sub handler { my $r = shift; my $uri = '/lookup_uri'; my $subr = $r->lookup_uri($uri); die unless $subr->uri eq $uri; $subr->run; 0; } 1; __DATA__ SetHandler modperl PerlResponseHandler Apache::TestHandler::ok1 1.9 +17 -11modperl-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.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- apache_functions.map 2001/04/02 19:30:37 1.8 +++ apache_functions.map 2001/04/04 17:12:07 1.9 @@ -51,19 +51,25 @@ ap_get_limit_xml_body >ap_core_translate -MODULE=Apache::SubRequest PACKAGE=guess - ap_sub_req_lookup_file - ap_sub_req_lookup_uri - ap_sub_req_method_uri - ap_sub_req_output_filter - ap_set_sub_req_protocol +MODULE=Apache::SubRequest PACKAGE=Apache::RequestRec +?ap_sub_req_output_filter +>ap_set_sub_req_protocol -ap_finalize_sub_req_protocol - ap_internal_redirect - ap_internal_redirect_handler + ap_internal_redirect | | r, new_uri + ap_internal_redirect_handler | | r, new_uri -MODULE=Apache::SubRequestPACKAGE=Apache::SubRequest - ap_destroy_sub_req - ap_run_sub_req +subrequest_rec *:ap_sub_req_lookup_file | | \ + r, new_file, next_filter=NULL | lookup_file + +subrequest_rec *:ap_sub_req_lookup_uri | | \ + r, new_file, next_filter=NULL | lookup_uri + +subrequest_rec *:ap_sub_req_method_uri | | \ + r, method, new_file, next_filter=NULL | lookup_method_ur
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/04/02 12:30:40 Modified:t/hooks authen.t t/hooks/TestHooks authen.pm xs modperl_xs_util.h xs/maps apache_functions.map Added: xs/Apache/Access Apache__Access.h Log: add get_basic_auth_pw() wrapper and tests Revision ChangesPath 1.2 +3 -1 modperl-2.0/t/hooks/authen.t Index: authen.t === RCS file: /home/cvs/modperl-2.0/t/hooks/authen.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- authen.t 2001/04/02 09:09:40 1.1 +++ authen.t 2001/04/02 19:30:22 1.2 @@ -4,7 +4,7 @@ use Test; use Apache::TestRequest; -plan tests => 3; +plan tests => 4; my $location = "/TestHooks::authen"; @@ -15,5 +15,7 @@ ok $rc == 401; ok GET_OK $location, username => 'dougm', password => 'foo'; + +ok ! GET_OK $location, username => 'dougm', password => 'wrong'; 1.2 +12 -1 modperl-2.0/t/hooks/TestHooks/authen.pm Index: authen.pm === RCS file: /home/cvs/modperl-2.0/t/hooks/TestHooks/authen.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- authen.pm 2001/04/02 09:09:40 1.1 +++ authen.pm 2001/04/02 19:30:27 1.2 @@ -7,7 +7,18 @@ sub handler { my $r = shift; -#auth api not complete yet + +my($rc, $sent_pw) = $r->get_basic_auth_pw; + +return $rc if $rc != 0; + +my $user = $r->user; + +unless ($user eq 'dougm' and $sent_pw eq 'foo') { +$r->note_basic_auth_failure; +return 401; +} + 0; } 1.4 +9 -0 modperl-2.0/xs/modperl_xs_util.h Index: modperl_xs_util.h === RCS file: /home/cvs/modperl-2.0/xs/modperl_xs_util.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- modperl_xs_util.h 2001/03/13 06:49:12 1.3 +++ modperl_xs_util.h 2001/04/02 19:30:31 1.4 @@ -9,6 +9,15 @@ #define dITEMS I32 items = SP - MARK #endif +#define mpxs_PPCODE(code) STMT_START { \ +SP -= items; \ +code; \ +PUTBACK; \ +} STMT_END + +#define PUSHs_mortal_iv(iv) PUSHs(sv_2mortal(newSViv(iv))) +#define PUSHs_mortal_pv(pv) PUSHs(sv_2mortal(newSVpv((char *)pv,0))) + #define mpxs_sv_grow(sv, len) \ (void)SvUPGRADE(sv, SVt_PV); \ SvGROW(sv, len+1) 1.1 modperl-2.0/xs/Apache/Access/Apache__Access.h Index: Apache__Access.h === static XS(MPXS_ap_get_basic_auth_pw) { dXSARGS; request_rec *r; const char *sent_pw = NULL; int rc; mpxs_usage_items_1("r"); mpxs_PPCODE({ r = mp_xs_sv2_r(ST(0)); rc = ap_get_basic_auth_pw(r, &sent_pw); EXTEND(SP, 2); PUSHs_mortal_iv(rc); if (rc == OK) { PUSHs_mortal_pv(sent_pw); } else { PUSHs(&PL_sv_undef); } }); } 1.8 +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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- apache_functions.map 2001/03/25 22:32:11 1.7 +++ apache_functions.map 2001/04/02 19:30:37 1.8 @@ -106,7 +106,7 @@ #MODULE=Apache::Auth ap_auth_name ap_auth_type - ap_get_basic_auth_pw + ap_get_basic_auth_pw | MPXS_ | r ap_note_auth_failure ap_note_basic_auth_failure ap_note_digest_auth_failure
cvs commit: modperl-2.0/xs/maps apache_functions.map apache_structures.map
dougm 01/03/25 14:32:11 Modified:xs/maps apache_functions.map apache_structures.map Added: xs/Apache/Command Apache__Command.h xs/Apache/Directive Apache__Directive.h xs/Apache/Module Apache__Module.h Log: enabled Apache::{Directive,Command,Module} modules add wrappers to access ap_conftree, "command_rec->next" and top_module Revision ChangesPath 1.1 modperl-2.0/xs/Apache/Command/Apache__Command.h Index: Apache__Command.h === #define mpxs_Apache__Command_next(cmd) \ (++cmd, ((cmd && cmd->name) ? cmd : NULL)) 1.1 modperl-2.0/xs/Apache/Directive/Apache__Directive.h Index: Apache__Directive.h === #define mpxs_Apache__Directive_conftree(CLASS) \ (CLASS ? ap_conftree : ap_conftree) 1.1 modperl-2.0/xs/Apache/Module/Apache__Module.h Index: Apache__Module.h === #define mpxs_Apache__Module_top_module(CLASS) \ (CLASS ? top_module : top_module) 1.7 +9 -6 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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- apache_functions.map 2001/03/17 17:33:03 1.6 +++ apache_functions.map 2001/03/25 22:32:11 1.7 @@ -150,7 +150,8 @@ >ap_open_stderr_log >ap_open_logs -!MODULE=Apache::Module +MODULE=Apache::Module + module *:DEFINE_top_module | | SV *:CLASS -ap_add_loaded_module -ap_add_module -ap_add_named_module @@ -164,10 +165,11 @@ >ap_show_modules >ap_register_hooks -!MODULE=Apache::Directive - ap_add_node - ap_build_config - ap_build_cont_config +MODULE=Apache::Directive + ap_directive_t *:DEFINE_conftree | | SV *:CLASS +!ap_add_node +!ap_build_config +!ap_build_cont_config ap_walk_config >ap_process_config_tree @@ -216,7 +218,8 @@ >ap_parse_htaccess >ap_process_resource_config -!MODULE=Apache::Command +MODULE=Apache::Command + command_rec *:DEFINE_next | | command_rec *:cmd ap_check_cmd_context ap_soak_end_container -ap_set_file_slot 1.2 +3 -3 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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- apache_structures.map 2001/03/05 03:49:12 1.1 +++ apache_structures.map 2001/03/25 22:32:11 1.2 @@ -126,7 +126,7 @@ virthost -! + version minor_version module_index @@ -151,7 +151,7 @@ short_name -! + name func cmd_data @@ -180,7 +180,7 @@ method_list -! + directive args next
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/03/16 22:03:38 Modified:lib/ModPerl Code.pm src/modules/perl modperl_callback.c modperl_config.h modperl_handler.c modperl_handler.h modperl_mgv.c modperl_mgv.h xs/Apache/RequestUtil Apache__RequestUtil.h xs/maps apache_functions.map Added: xs/Apache/ServerUtil Apache__ServerUtil.h Log: implement ${r,s}->{push,set,get}_handlers} Revision ChangesPath 1.51 +1 -1 modperl-2.0/lib/ModPerl/Code.pm Index: Code.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/Code.pm,v retrieving revision 1.50 retrieving revision 1.51 diff -u -r1.50 -r1.51 --- Code.pm 2001/03/16 07:30:21 1.50 +++ Code.pm 2001/03/17 06:03:37 1.51 @@ -92,7 +92,7 @@ Srv => [qw(NONE CLONE PARENT ENABLED AUTOLOAD), @hook_flags, 'UNSET'], Dir => [qw(NONE SEND_HEADER SETUP_ENV UNSET)], Interp => [qw(NONE IN_USE PUTBACK CLONED BASE)], -Handler => [qw(NONE PARSED METHOD OBJECT ANON AUTOLOAD)], +Handler => [qw(NONE PARSED METHOD OBJECT ANON AUTOLOAD DYNAMIC)], ); my %flags_lookup = map { $_,1 } qw(Srv Dir); 1.36 +4 -2 modperl-2.0/src/modules/perl/modperl_callback.c Index: modperl_callback.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_callback.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- modperl_callback.c2001/03/16 17:23:23 1.35 +++ modperl_callback.c2001/03/17 06:03:37 1.36 @@ -9,7 +9,7 @@ int count, status; #ifdef USE_ITHREADS -if (p && !MpHandlerPARSED(handler)) { +if (p && !MpHandlerPARSED(handler) && !MpHandlerDYNAMIC(handler)) { MP_dSCFG(s); if (scfg->threaded_mpm) { /* @@ -103,6 +103,7 @@ #endif MP_dSCFG(s); MP_dDCFG; +MP_dRCFG; modperl_handler_t **handlers; apr_pool_t *p = NULL; MpAV *av, **avp; @@ -123,7 +124,7 @@ p = pconf; } -avp = modperl_handler_lookup_handlers(dcfg, scfg, NULL, p, +avp = modperl_handler_lookup_handlers(dcfg, scfg, rcfg, p, type, idx, FALSE, &desc); if (!(avp && (av = *avp))) { @@ -171,6 +172,7 @@ break; }; +/* XXX: deal with {push,set}_handler of the phase we're currently in */ MP_TRACE_h(MP_FUNC, "running %d %s handlers\n", av->nelts, desc); handlers = (modperl_handler_t **)av->elts; 1.24 +4 -0 modperl-2.0/src/modules/perl/modperl_config.h Index: modperl_config.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.h,v retrieving revision 1.23 retrieving revision 1.24 diff -u -r1.23 -r1.24 --- modperl_config.h 2001/03/16 06:35:18 1.23 +++ modperl_config.h 2001/03/17 06:03:37 1.24 @@ -37,6 +37,10 @@ (r ? (modperl_config_dir_t *) \ ap_get_module_config(r->per_dir_config, &perl_module) : NULL) +#define modperl_config_dir_get_defaults(s) \ + (modperl_config_dir_t *) \ + ap_get_module_config(s->lookup_defaults, &perl_module) + #define MP_dDCFG \ modperl_config_dir_t *dcfg = modperl_config_dir_get(r) 1.6 +216 -5modperl-2.0/src/modules/perl/modperl_handler.c Index: modperl_handler.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_handler.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- modperl_handler.c 2001/03/16 17:23:24 1.5 +++ modperl_handler.c 2001/03/17 06:03:37 1.6 @@ -64,41 +64,252 @@ #define set_desc(dtype) \ MP_TRACE_a_do(if (desc) *desc = modperl_handler_desc_##dtype(idx)) +#define check_modify(dtype) \ +if ((action > MP_HANDLER_ACTION_GET) && rcfg) { \ +dTHX; \ +Perl_croak(aTHX_ "too late to modify %s handlers", \ + modperl_handler_desc_##dtype(idx)); \ +} + +/* + * generic function to lookup handlers for use in modperl_callback(), + * $r->{push,set,get}_handlers, $s->{push,set,get}_handlers + * $s->push/set at startup time are the same as configuring Perl*Handlers + * $r->push/set at request time will create entries in r->request_config + * push will first merge with configured handlers, unless an entry + * in r->request_config already exists. in this case, push or set has + * already been called for the given handler, + * r->request_config entries then override those in r->per_dir_config + */ + MpAV **modperl_handler_lookup_handlers(modperl_config_dir_t *dcfg,
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/03/12 23:50:24 Modified:xs/Apache/RequestUtil Apache__RequestUtil.h xs/maps apache_functions.map Log: the protocol module helpers are functions, not #defines Revision ChangesPath 1.2 +10 -8 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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Apache__RequestUtil.h 2001/03/13 06:32:27 1.1 +++ Apache__RequestUtil.h 2001/03/13 07:50:19 1.2 @@ -3,8 +3,9 @@ * for protocol module helpers */ -static MP_INLINE request_rec *mpxs_Apache__RequestRec_new(SV *classname, - conn_rec *c) +static MP_INLINE +request_rec *mpxs_Apache__RequestRec_new(SV *classname, + conn_rec *c) { apr_pool_t *p; request_rec *r; @@ -39,8 +40,9 @@ return r; } -static MP_INLINE int mpxs_Apache__RequestRec_location_merge(request_rec *r, -char *location) +static MP_INLINE +int mpxs_Apache__RequestRec_location_merge(request_rec *r, + char *location) { apr_pool_t *p = r->pool; server_rec *s = r->server; @@ -71,10 +73,10 @@ return 0; } -static MP_INLINE void -mpxs_Apache__RequestRec_set_basic_credentials(request_rec *r, - char *username, - char *password) +static MP_INLINE +void mpxs_Apache__RequestRec_set_basic_credentials(request_rec *r, + char *username, + char *password) { char encoded[1024]; int elen; 1.4 +3 -3 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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- apache_functions.map 2001/03/13 07:29:00 1.3 +++ apache_functions.map 2001/03/13 07:50:22 1.4 @@ -46,10 +46,10 @@ ap_is_initial_req #protocol module helpers - int:DEFINE_location_merge | | request_rec *:r, char *:location - void:DEFINE_set_basic_credentials | | request_rec *:r, char *:username, char *:password + mpxs_Apache__RequestRec_location_merge + mpxs_Apache__RequestRec_set_basic_credentials PACKAGE=Apache::RequestRec - request_rec *:DEFINE_new | | SV *:classname, conn_rec *:c + mpxs_Apache__RequestRec_new #MODULE=Apache::RequestConfig ap_document_root
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/03/12 23:29:03 Modified:xs/Apache/Filter Apache__Filter.h xs/maps apache_functions.map Log: add output filter "stream" interface read/print methods Revision ChangesPath 1.2 +53 -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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Apache__Filter.h 2001/03/05 03:54:18 1.1 +++ Apache__Filter.h 2001/03/13 07:28:54 1.2 @@ -1,2 +1,55 @@ #define mpxs_Apache__RequestRec_add_output_filter(r, name, ctx) \ ap_add_output_filter(name, ctx, r, NULL) + +/* XXX: this should be generated like the others in modperl_xs_sv_convert.h */ +#define mp_xs_sv2_modperl_filter(sv) \ +((SvROK(sv) && (SvTYPE(SvRV(sv)) == SVt_PVMG)) \ +|| (Perl_croak(aTHX_ "argument is not a blessed reference"),0) ? \ +(modperl_filter_t *)SvIV((SV*)SvRV(sv)) : (modperl_filter_t *)NULL) + +static MP_INLINE apr_size_t mpxs_Apache__OutputFilter_print(pTHX_ I32 items, +SV **MARK, SV **SP) +{ +modperl_filter_t *modperl_filter; +apr_size_t bytes = 0; + +mpxs_usage_va_1(modperl_filter, "$filter->print(...)"); + +if (modperl_filter->mode == MP_OUTPUT_FILTER_MODE) { +mpxs_write_loop(modperl_output_filter_write, modperl_filter); +modperl_output_filter_flush(modperl_filter); +} +else { +croak("input filters not yet supported"); +} + +/* XXX: ap_rflush if $| */ + +return bytes; +} + +static MP_INLINE apr_size_t mpxs_Apache__OutputFilter_read(pTHX_ I32 items, + SV **MARK, SV **SP) +{ +modperl_filter_t *modperl_filter; +apr_size_t wanted, len=0; +SV *buffer; + +mpxs_usage_va_2(modperl_filter, buffer, "$filter->read(buf, [len])"); + +if (items > 2) { +wanted = SvIV(*MARK); +} +else { +wanted = MP_IOBUFSIZE; +} + +if (modperl_filter->mode == MP_OUTPUT_FILTER_MODE) { +len = modperl_output_filter_read(aTHX_ modperl_filter, buffer, wanted); +} +else { +croak("input filters not yet supported"); +} + +return len; +} 1.3 +5 -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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- apache_functions.map 2001/03/13 06:32:28 1.2 +++ apache_functions.map 2001/03/13 07:29:00 1.3 @@ -183,7 +183,11 @@ ap_filter_t *:DEFINE_add_output_filter | | \ request_rec *:r, const char *:name, void *:ctx -MODULE=Apache::Filter PACKAGE=guess +PACKAGE=Apache::OutputFilter + mpxs_Apache__OutputFilter_print | | ... + mpxs_Apache__OutputFilter_read | | ... + +PACKAGE=guess ~ap_add_output_filter ap_add_input_filter ap_get_brigade
cvs commit: modperl-2.0/xs/maps apache_functions.map
dougm 01/03/12 22:32:28 Modified:xs/maps apache_functions.map Added: xs/Apache/RequestUtil Apache__RequestUtil.h Log: add a few protocol module helper methods Revision ChangesPath 1.1 modperl-2.0/xs/Apache/RequestUtil/Apache__RequestUtil.h Index: Apache__RequestUtil.h === /* * XXX: these three should be part of the apache api * for protocol module helpers */ static MP_INLINE request_rec *mpxs_Apache__RequestRec_new(SV *classname, conn_rec *c) { apr_pool_t *p; request_rec *r; server_rec *s = c->base_server; apr_pool_create(&p, c->pool); r = apr_pcalloc(p, sizeof(request_rec)); r->pool = p; r->connection = c; r->server = s; r->hostname = s->server_hostname; r->request_config = ap_create_request_config(p); r->per_dir_config = s->lookup_defaults; r->method = "GET"; r->method_number = M_GET; r->uri = "/"; r->filename = (char *)ap_server_root_relative(p, r->uri); r->the_request = "UNKNOWN"; r->assbackwards = 1; r->protocol = "UNKNOWN"; r->status = HTTP_OK; r->headers_in = apr_table_make(p, 1); r->headers_out = apr_table_make(p, 1); r->err_headers_out = apr_table_make(p, 1); r->notes = apr_table_make(p, 1); return r; } static MP_INLINE int mpxs_Apache__RequestRec_location_merge(request_rec *r, char *location) { apr_pool_t *p = r->pool; server_rec *s = r->server; core_server_config *sconf = ap_get_module_config(s->module_config, &core_module); ap_conf_vector_t **sec = (ap_conf_vector_t **)sconf->sec_url->elts; int num_sec = sconf->sec_url->nelts; int i; for (i=0; id, location)) { if (!entry->ap_auth_type) { entry->ap_auth_type = "Basic"; } if (!entry->ap_auth_name) { entry->ap_auth_name = apr_pstrdup(p, location); } r->per_dir_config = ap_merge_per_dir_configs(p, s->lookup_defaults, sec[i]); return 1; } } return 0; } static MP_INLINE void mpxs_Apache__RequestRec_set_basic_credentials(request_rec *r, char *username, char *password) { char encoded[1024]; int elen; char *auth_value, *auth_cat; auth_cat = apr_pstrcat(r->pool, username, ":", password, NULL); elen = apr_base64_encode(encoded, auth_cat, strlen(auth_cat)); encoded[elen] = '\0'; auth_value = apr_pstrcat(r->pool, "Basic ", encoded, NULL); apr_table_setn(r->headers_in, "Authorization", auth_value); } 1.2 +6 -0 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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- apache_functions.map 2001/03/05 03:49:12 1.1 +++ apache_functions.map 2001/03/13 06:32:28 1.2 @@ -45,6 +45,12 @@ ap_get_status_line ap_is_initial_req + #protocol module helpers + int:DEFINE_location_merge | | request_rec *:r, char *:location + void:DEFINE_set_basic_credentials | | request_rec *:r, char *:username, char *:password +PACKAGE=Apache::RequestRec + request_rec *:DEFINE_new | | SV *:classname, conn_rec *:c + #MODULE=Apache::RequestConfig ap_document_root ap_get_limit_req_body
cvs commit: modperl-2.0/xs/maps apache_functions.map apache_structures.map apache_types.map
dougm 01/03/04 19:49:12 Added: xs/maps apache_functions.map apache_structures.map apache_types.map Log: the function/structure/type maps for apache Revision ChangesPath 1.1 modperl-2.0/xs/maps/apache_functions.map Index: apache_functions.map === ## Apache functions ## #keywords: # MODULE = the module name # e.g. Apache::Connection -> Apache/Connection.{pm,xs} # # PACKAGE = the package name functions belong to, defaults to MODULE # value of 'guess' indicates that package name should be # guessed based on first argument found that maps to a Perl class # fallsback on the prefix (ap_ -> Apache, apr_ -> APR) # # PREFIX = prefix to be stripped # defaults to PACKAGE, converted to C name convention, e.g. # APR::Base64 -> apr_base64_ # if the converted prefix does not match, defaults to ap_ or apr_ #format of entries: # C function name | dispatch function name | argspec | Perl alias # dispatch function name defaults to C function name # if the dispatch name is just a prefix (mpxs_, MPXS_) # the C function name is appended to it # the return type can be specified before the C function name, # defaults to return_type in {Apache,ModPerl}::FunctionTable # the argspec defaults to arguments in {Apache,ModPerl}::FunctionTable # argument types can be specified to override those in the FunctionTable # default values can be specified, e.g. arg=default_value # argspec of '...' indicates passthru, calling the function with # (aTHX_ I32 items, SP **sp, SV **MARK) # the alias will be created in the current PACKAGE # function names that do not begin with /^\w/ are skipped # for details see: %ModPerl::MapUtil::disabled_map MODULE=Apache::RequestUtil PACKAGE=guess >ap_finalize_request_protocol ap_default_port_for_request ap_default_port_for_scheme ap_default_type ap_get_server_name ap_get_server_port !ap_content_type_tolower ap_get_status_line ap_is_initial_req #MODULE=Apache::RequestConfig ap_document_root ap_get_limit_req_body ap_get_limit_xml_body >ap_core_translate MODULE=Apache::SubRequest PACKAGE=guess ap_sub_req_lookup_file ap_sub_req_lookup_uri ap_sub_req_method_uri ap_sub_req_output_filter ap_set_sub_req_protocol -ap_finalize_sub_req_protocol ap_internal_redirect ap_internal_redirect_handler MODULE=Apache::SubRequestPACKAGE=Apache::SubRequest ap_destroy_sub_req ap_run_sub_req MODULE=Apache::RequestIO PACKAGE=Apache::RequestRec ap_discard_request_body !ap_getline ap_get_client_block | mpxs_ | r, SV *:buffer, bufsiz ap_setup_client_block | | r, read_policy=REQUEST_CHUNKED_ERROR ap_should_client_block ap_rflush PREFIX=ap_r ap_rwrite | | r, buf, nbyte ~ap_rprintf !ap_rputc ~ap_rputs ap_rvputs | mpxs_ | ... | puts -ap_vrprintf mpxs_Apache__RequestRec_TIEHANDLE MODULE=Apache::Response PACKAGE=guess ap_make_etag ap_set_content_length ap_set_etag ap_meets_conditions ap_rationalize_mtime ap_update_mtime ap_send_error_response ap_send_fd ap_send_mmap ap_send_size ap_set_keepalive ap_set_last_modified ap_custom_response MODULE=Apache::Access PACKAGE=guess ap_allow_methods ap_allow_options ap_allow_overrides ap_get_remote_logname !ap_requires ap_satisfies #MODULE=Apache::Auth ap_auth_name ap_auth_type ap_get_basic_auth_pw ap_note_auth_failure ap_note_basic_auth_failure ap_note_digest_auth_failure ap_some_auth_required !MODULE=Apache::ScriptUtil PACKAGE=guess ap_add_cgi_vars ap_add_common_vars ap_create_environment ap_find_path_info -ap_scan_script_header_err -ap_scan_script_header_err_core -ap_scan_script_header_err_strs MODULE=Apache::ServerUtil PACKAGE=guess ap_add_version_component ap_construct_server ap_construct_url | | r,uri,p ap_error_log2stderr #MODULE=Apache::ServerConfig ap_exists_config_define ap_get_local_host ap_get_server_built ap_get_server_version ap_psignature | | r,prefix ap_server_root_relative MODULE=Apache::Connection PACKAGE=guess ap_get_remote_host ap_read_request >ap_update_vhost_given_ip ap_new_connection !MODULE=Apache::Log PACKAGE=guess ap_log_assert ap_log_error ap_log_perror ap_log_pid ap_log_rerror >ap_open_stderr_log >ap_open_logs !MODULE=Apache::Module -ap_add_loaded_module -ap_add_module -ap_add_named_module ap_find_linked_module ap_find_module_name ap_remove_loaded_module ap_remove_module >ap_single_module_configure >ap_setup_prelinked_modules >ap_show_directives >ap_show_modules >ap_register_hooks !MODULE=Apac