summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-10-16 19:03:33 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-10-16 19:03:33 +0000
commit7c18261b8051e684b6650ad5d780cf5a07f7f0e7 (patch)
treef28e4c9422fee30d6358794e6162d43b9372685f
parentb02bbe825352a754736f128afc93466d01504f1a (diff)
* 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.
-rw-r--r--IkiWiki/Plugin/inline.pm25
-rw-r--r--debian/changelog5
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 <joeyh@debian.org> Mon, 16 Oct 2006 14:50:13 -0400
+ -- Joey Hess <joeyh@debian.org> Mon, 16 Oct 2006 15:02:39 -0400
ikiwiki (1.29) unstable; urgency=low