From 7c18261b8051e684b6650ad5d780cf5a07f7f0e7 Mon Sep 17 00:00:00 2001 From: joey Date: Mon, 16 Oct 2006 19:03:33 +0000 Subject: [PATCH] * Wrap entire technortati ping operation in an eval to catch all possible failure modes, after I observed a simple ->value crashing ikiwiki when a ping failed. --- IkiWiki/Plugin/inline.pm | 25 +++++++++++++++---------- debian/changelog | 5 ++++- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/IkiWiki/Plugin/inline.pm b/IkiWiki/Plugin/inline.pm index 1ee79180c..c02aac1ce 100644 --- a/IkiWiki/Plugin/inline.pm +++ b/IkiWiki/Plugin/inline.pm @@ -314,17 +314,22 @@ sub pingurl (@) { #{{{ my $title=pagetitle(basename($page)); my $url="$config{url}/".htmlpage($page); foreach my $pingurl (@{$config{pingurl}}) { - my $client = RPC::XML::Client->new($pingurl); - my $req = RPC::XML::request->new('weblogUpdates.ping', - $title, $url); debug("Pinging $pingurl for $page"); - my $res = $client->send_request($req); - if (! ref $res) { - debug("Did not receive response to ping"); - } - my $r=$res->value; - if (! exists $r->{flerror} || $r->{flerror}) { - debug("Ping rejected: ".(exists $r->{message} ? $r->{message} : "[unknown reason]")); + eval { + my $client = RPC::XML::Client->new($pingurl); + my $req = RPC::XML::request->new('weblogUpdates.ping', + $title, $url); + my $res = $client->send_request($req); + if (! ref $res) { + debug("Did not receive response to ping"); + } + my $r=$res->value; + if (! exists $r->{flerror} || $r->{flerror}) { + debug("Ping rejected: ".(exists $r->{message} ? $r->{message} : "[unknown reason]")); + } + }; + if ($@) { + debug "Ping failed: $@"; } } } diff --git a/debian/changelog b/debian/changelog index 690b4a971..fd9cc5efa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,8 +7,11 @@ ikiwiki (1.30) UNRELEASED; urgency=low * Fix support for --pingurl at the command line. * Fix a subtle bug in will_render that broke some builds, by only clearing items from renderedfiles the first time per build. + * Wrap entire technortati ping operation in an eval to catch all possible + failure modes, after I observed a simple ->value crashing ikiwiki when + a ping failed. - -- Joey Hess Mon, 16 Oct 2006 14:50:13 -0400 + -- Joey Hess Mon, 16 Oct 2006 15:02:39 -0400 ikiwiki (1.29) unstable; urgency=low -- 2.26.2