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  Changes    Path
  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) = @_;
   
       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.9       +15 -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.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Apache__Filter.h  2001/04/20 15:40:06     1.8
  +++ Apache__Filter.h  2001/04/24 02:26:18     1.9
  @@ -58,6 +58,21 @@
       return len;
   }
   
  +static apr_status_t mpxs_ap_get_brigade(pTHX_ ap_filter_t *filter,
  +                                        apr_bucket_brigade *brigade,
  +                                        ap_input_mode_t mode,
  +                                        SV *svreadbytes)
  +{
  +    apr_size_t readbytes = svreadbytes ? SvIV(svreadbytes) : 0;
  +    apr_status_t status = ap_get_brigade(filter, brigade, mode, &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.13      +2 -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.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- apache_functions.map      2001/04/19 17:41:38     1.12
  +++ apache_functions.map      2001/04/24 02:26:19     1.13
  @@ -186,7 +186,8 @@
   PACKAGE=guess
   ~ap_add_output_filter
    ap_add_input_filter
  - ap_get_brigade | | filter, bucket, mode=AP_MODE_NONBLOCKING
  + ap_get_brigade | mpxs_ | \
  +               filter, bucket, mode=AP_MODE_NONBLOCKING, SV *:readbytes=Nullsv
    ap_pass_brigade
    ap_register_input_filter
    ap_register_output_filter
  
  
  

Reply via email to