X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/1ca191b5707ef38af5cbe196e314d57cd5c8c065..9a173d91bbeceb0514bb0ae6c32176eadab94d41:/IkiWiki/Plugin/pinger.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/pinger.pm b/IkiWiki/Plugin/pinger.pm
index 4a8088661..ec764caee 100644
--- a/IkiWiki/Plugin/pinger.pm
+++ b/IkiWiki/Plugin/pinger.pm
@@ -13,7 +13,7 @@ sub import {
 	hook(type => "needsbuild", id => "pinger", call => \&needsbuild);
 	hook(type => "preprocess", id => "ping", call => \&preprocess);
 	hook(type => "delete", id => "pinger", call => \&ping);
-	hook(type => "change", id => "pinger", call => \&ping);
+	hook(type => "rendered", id => "pinger", call => \&ping);
 }
 
 sub getsetup () {
@@ -45,6 +45,7 @@ sub needsbuild (@) {
 			}
 		}
 	}
+	return $needsbuild;
 }
 
 sub preprocess (@) {
@@ -66,18 +67,19 @@ sub ping {
 	if (! $pinged && %pages) {
 		$pinged=1;
 		
+		eval q{use Net::INET6Glue::INET_is_INET6}; # may not be available
+		
 		my $ua;
-		eval q{use LWPx::ParanoidAgent};
-		if (!$@) {
-			$ua=LWPx::ParanoidAgent->new;
-		}
-		else {
-			eval q{use LWP};
-			if ($@) {
-				debug(gettext("LWP not found, not pinging"));
-				return;
-			}
-			$ua=LWP::UserAgent->new;
+		eval {
+			# We pass the for_url parameter, even though it's
+			# undef, because that will make sure we crash if used
+			# with an older IkiWiki.pm that didn't automatically
+			# try to use LWPx::ParanoidAgent.
+			$ua=useragent(for_url => undef);
+		};
+		if ($@) {
+			debug(gettext("LWP not found, not pinging").": $@");
+			return;
 		}
 		$ua->timeout($config{pinger_timeout} || 15);
 		
@@ -105,8 +107,10 @@ sub ping {
 			# only ping when a page was changed, so a ping loop
 			# will still be avoided.
 			next if $url=~/^\Q$config{cgiurl}\E/;
+			my $local_cgiurl = IkiWiki::cgiurl();
+			next if $url=~/^\Q$local_cgiurl\E/;
 			
-			$ua->head($url);
+			$ua->get($url);
 		}
 		
 		exit 0;