It apparently works after I played with the code for the final flush.  I'm not 
sure why, though.  There was only one change (below).  Anybody see a 
significant difference?

In any case, I'll take it, since it works now.  :-)


------Original (broken) code------------
        $f->print(join '',
                  $state_ref->{'handle'}->flush(),
                  pack("V V",
                           crc32($state_ref->{'body'}),
                           length($state_ref->{'body'})),
                );
-------------------------------------------


------Working code----------------------
        $final_output = $state_ref->{'handle'}->flush();

        $f->print(join '',
                  $final_output,
                  pack("V V",
                           crc32($state_ref->{'body'}),
                           length($state_ref->{'body'})),
                );
------------------------------------------


On Friday 26 August 2005 03:11 pm, Alexander Charbonnet wrote:
> Okay, I've tried the new filter on a Gentoo system: Apache 2.0.54-r13,
> mod_perl 2.0.1-r2.  It helped me to port the filter to the correct API
> (which only required a couple of changes, thankfully), but it didn't fix
> the weird IE problem.
>
> I know I'm not alone in wanting this feature (being able to flush
> compressed output), since wherever CGI and compression are discussed, this
> is the main disadvantage.  If we could get this filter working it would
> give mod_perl a big advantage over PHP for applications where this is
> needed.
>
> The updated filter resides at: http://www.charbonnet.com/ChunkGzip.pm
>
> I modified my test script (below) to print the time, as well as to do an
> additional flush just to be sure.
>
> Here's what happens in my IE window:
>
> prints "starting 1125086461"
> pauses 3 seconds
> prints "finished 1125086464"; this is where everything should stop
> status displays "Web site found, waiting for reply"
> screen clears
> prints "starting 1125086464"
> done
>
> The browser got the finished output, and everything was fine for a split
> second, until it decided to reload the page and only print part of the
> output the second time.
>
> Is there something I'm not setting?  Is there a special IE keepalive or
> something that could fix this?  It does still work perfectly in Gecko and
> KHTML.
>
> Thanks again for your help,
> Alex
>
>
> Test script:
> ---------------
> use CGI qw(:standard);
> my $r = shift;
> print
>     header,
>     start_html,
>     p('starting '.time),
>   ;
> $r->rflush;
> sleep 3;    #"doing work"
> print
>     p('finished '.time),
>     end_html,
>   ;
> $r->rflush;
>
> On Friday 26 August 2005 03:42 am, you wrote:
> > Alexander Charbonnet wrote:
> > > I'm running the Debian Sarge versions of everything: Apache 2.0.54-4,
> > > mod_perl 1.999.21-1.
> >
> > I'd update to something after RC5 so that you don't use an unsupported
> > API of mod_perl2.
> >
> > see:
> > http://perl.apache.org/docs/2.0/rename.html

Reply via email to