--- scripts/squid_redirect-nodata.orig +++ scripts/squid_redirect-nodata @@ -31,7 +31,7 @@ use bytes; use POSIX ":sys_wait_h"; use Socket; -require 'flush.pl'; +use IO::Handle; $::IOSIZE=1024; @@ -232,7 +232,7 @@ while (defined ($_=)) { if (defined $::LogFile) { print LOGFILE $_; - flush(LOGFILE); + LOGFILE->flush(); } chomp; @@ -259,7 +259,7 @@ while (defined ($_=)) } } - flush(STDOUT); + STDOUT->flush(); } exit 0; @@ -789,14 +788,16 @@ sub proxy_forkchild($$$) } # dispatch request and headers - printflush(GCHILD_WRITE,"$method $uri $v1 $v2\n") + print GCHILD_WRITE "$method $uri $v1 $v2\n" || die "tell grandchild the request: $!"; + GCHILD_WRITE->flush(); print PROXY "$method $uri HTTP/$v1.$v2\r\n"; for my $H (@hdrs) { print PROXY $H->[0], ":", $H->[1], "\r\n"; } - printflush(PROXY,"\r\n"); + print PROXY "\r\n"; + PROXY->flush(); ##warn "[$$]: sent rq to proxy\n"; proxy_copybody(CONN,PROXY,$method,$persist,\@hdrs) @@ -965,8 +966,9 @@ sub proxy_grandchild($) } warn "[$child:$$]: pass response to parent\n"; - printflush(TOCHILD,($persist ? PERSIST : CLOSE)." $code $info") + print TOCHILD ($persist ? PERSIST : CLOSE)." $code $info" || die "[$child:$$]: print(TOCHILD) fails: $!"; + TOCHILD->flush(); warn "[$child:$$]: told parent, passing response to client\n"; # copy to child @@ -974,7 +976,8 @@ sub proxy_grandchild($) for my $H (@hdrs) { print CONN $H->[0], ":", $H->[1], "\r\n"; } - printflush(CONN,"\r\n"); + print CONN "\r\n"; + CONN->flush(); # see RFC2616 section 10 if ( @@ -1050,11 +1053,13 @@ sub proxy_copycl($$$) ) { ##warn "[$$]: read ".length($_)." bytes of request body\n"; - if (! printflush($to,$_)) - { warn "$::cmd: [$$]: printflush($to,..): $!"; + $to->autoflush(1); + if (! print $to $_) + { warn "$::cmd: [$$]: print $to ..): $!"; $ok=0; last COPY; } + $to->autoflush(0); $cl-=length if defined $cl; } warn "[$$]: finished unchunked body, ok=$ok"; @@ -1083,10 +1088,10 @@ sub proxy_copychunked($$) { print $to $_; $chunksize-=length; } - flush($to); + $to->flush(); } - flush($to); + $to->flush(); # pass trailer headers while (defined($_=<$from>) && !/^\r?\n/) @@ -1096,7 +1101,7 @@ sub proxy_copychunked($$) { ##warn "[$$]: final trailer: $_"; print $to $_; } - flush($to); + $to->flush(); return (1,""); }