tag 349745 patch moreinfo thanks Nigel Horne <[EMAIL PROTECTED]> writes:
[...] > njh:/var/log/squid# /usr/sbin/squid-prefetch > Alarm clock It seems the alarm timer isn't getting reset in case of exceptions. Does the attached patch work for you? Thanks! Matej
--- squid-prefetch~ +++ squid-prefetch @@ -144,14 +144,18 @@ local $SIG{ALRM} = sub { die "Error: Timeout fetching $url\n" }; alarm(3); + eval { my $http = Net::HTTP->new(PeerHost => $ProxyHost, PeerPort => $ProxyPort, Host => $host, SendTE => 0, KeepAlive => 0); $http->write_request("GET" => "http://$host$path", "Accept" => "text/html", "Cache-Control" => "only-if-cached", "User-Agent" => "Squid-Prefetch"); my ($code,$mesg,%hdrs) = $http->read_response_headers(); print "\nfetch: $url: $code ($mesg)\n"; print " $k -> $v\n" while (($k,$v) = each %hdrs); + }; alarm(0); + die if $@; + if ($code != 200) { print STDERR "Warning: fetch returned code $code ($mesg) for $url\n"; return; @@ -170,6 +174,7 @@ } alarm(5); + eval { while (1) { my $bufr; my $size = $http->read_entity_body($bufr,4096); @@ -193,7 +198,9 @@ $data =~ s!^.*($|<)!!; } + }; alarm(0); + die if $@; @links = uniq(sort(@links)); RandomizeArray([EMAIL PROTECTED]); @@ -216,14 +223,18 @@ local $SIG{ALRM} = sub { die "Error: Timeout fetching $url\n" }; alarm(3); + eval { my $http = Net::HTTP->new(PeerHost => $ProxyHost, PeerPort => $ProxyPort, Host => $host, SendTE => 1, KeepAlive => 0); $http->write_request("GET" => "http://$host$path", "Accept" => "text/*", "User-Agent" => "Squid-Prefetch"); my ($code,$mesg,%hdrs) = $http->read_response_headers(); print "\nprefetch: $url: $code ($mesg)\n"; # print " $k -> $v\n" while (($k,$v) = each %hdrs); + }; alarm(0); + die if $@; + if ($code != 200) { print STDERR "Warning: fetch returned code $code ($mesg) for $url\n"; return; @@ -238,6 +249,7 @@ } alarm(5); + eval { while (1) { my $bufr; my $size = $http->read_entity_body($bufr,4096); @@ -246,7 +258,9 @@ $total += $size; last if ($total > $FetchMaxSize); } + }; alarm(0); + die if $@; }