You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl-cvs@perl.apache.org by st...@apache.org on 2003/05/13 11:18:58 UTC

cvs commit: modperl-2.0/src/modules/perl modperl_filter.c

stas        2003/05/13 02:18:58

  Modified:    src/modules/perl modperl_filter.c
  Log:
  simplify modperl_input_filter_flush to call the appropriate eos/flush
  functions and add tracing from there. remove a potential problem where
  ->eos is reset when flush is sent
  
  Revision  Changes    Path
  1.64      +13 -10    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.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- modperl_filter.c	9 May 2003 03:33:01 -0000	1.63
  +++ modperl_filter.c	13 May 2003 09:18:58 -0000	1.64
  @@ -39,6 +39,8 @@
       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;
  +    MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT
  +               "write out: EOS bucket\n", MP_FILTER_NAME(filter->f));
       return APR_SUCCESS;
   }
   
  @@ -47,6 +49,8 @@
       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);
  +    MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT
  +               "write out: FLUSH bucket\n", MP_FILTER_NAME(filter->f));
       return APR_SUCCESS;
   }
   
  @@ -653,16 +657,15 @@
           /* no data should be sent after EOS has been sent */
           return filter->rc;
       }
  -    
  -    if (filter->eos || filter->flush) {
  -        MP_TRACE_f(MP_FUNC, MP_FILTER_NAME_FORMAT
  -                   "write out: %s bucket\n",
  -                   MP_FILTER_NAME(filter->f),
  -                   filter->eos ? "EOS" : "FLUSH");
  -        filter->rc = filter->eos ?
  -            send_input_eos(filter) : send_input_flush(filter);
  -        /* modperl_brigade_dump(filter->bb_out, stderr); */
  -        filter->flush = filter->eos = 0;
  +
  +    if (filter->flush) {
  +        filter->rc = send_input_flush(filter);
  +        filter->flush = 0;
  +    }
  +
  +    if (filter->eos) {
  +        filter->rc = send_input_eos(filter);
  +        filter->eos = 0;
       }
       
       return filter->rc;