summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-03-15 13:49:22 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-03-15 13:49:22 -0400
commite7ce86db11174606d06a6cfabfa9c41aa3cbd50e (patch)
treef8c41af0d7228105653a443ae1307ea7e9314f5e
parentb8c55c4db282c87e3bada4491329ac3c940ff28d (diff)
* external: Fix support of XML::RPC::fault.
-rw-r--r--IkiWiki/Plugin/external.pm13
-rw-r--r--debian/changelog1
-rw-r--r--doc/bugs/ikiwiki_renders___39__28__39___if_external_plugins_return_nothing.mdwn3
3 files changed, 12 insertions, 5 deletions
diff --git a/IkiWiki/Plugin/external.pm b/IkiWiki/Plugin/external.pm
index a5afdc4be..2650a8cd1 100644
--- a/IkiWiki/Plugin/external.pm
+++ b/IkiWiki/Plugin/external.pm
@@ -59,15 +59,17 @@ sub rpc_call ($$;@) { #{{{
error("XML RPC parser failure: $r") unless ref $r;
if ($r->isa('RPC::XML::response')) {
my $value=$r->value;
- if ($value->isa('RPC::XML::array')) {
+ if ($r->is_fault($value)) {
+ # throw the error as best we can
+ print STDERR $value->string."\n";
+ return "";
+ }
+ elsif ($value->isa('RPC::XML::array')) {
return @{$value->value};
}
elsif ($value->isa('RPC::XML::struct')) {
return %{$value->value};
}
- elsif ($value->isa('RPC::XML::fault')) {
- die $value->string;
- }
else {
return $value->value;
}
@@ -177,7 +179,8 @@ sub hook ($@) { #{{{
delete $params{call};
IkiWiki::hook(%params, call => sub {
- IkiWiki::Plugin::external::rpc_call($plugin, $callback, @_)
+ my $ret=IkiWiki::Plugin::external::rpc_call($plugin, $callback, @_);
+ return $ret;
});
} #}}}
diff --git a/debian/changelog b/debian/changelog
index b9bfd363d..85db048e8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -40,6 +40,7 @@ ikiwiki (2.41) UNRELEASED; urgency=low
Closes: #470530
* Fix expiry of old recentchanges changeset pages.
* French translation update. Closes: #471010
+ * external: Fix support of XML::RPC::fault.
-- martin f. krafft <madduck@debian.org> Sun, 02 Mar 2008 17:46:38 +0100
diff --git a/doc/bugs/ikiwiki_renders___39__28__39___if_external_plugins_return_nothing.mdwn b/doc/bugs/ikiwiki_renders___39__28__39___if_external_plugins_return_nothing.mdwn
index b22c44e16..8d73dfa86 100644
--- a/doc/bugs/ikiwiki_renders___39__28__39___if_external_plugins_return_nothing.mdwn
+++ b/doc/bugs/ikiwiki_renders___39__28__39___if_external_plugins_return_nothing.mdwn
@@ -7,3 +7,6 @@ If the rst2html procedure of the rst external plugin returns None (e.g. when it
In addition to the broken plugin, this seems like a bug in ikiwiki, which should probably output an informational message about the plugin returning an invalid value.
--[[madduck]]
+
+> [[done]], I made it print the thrown error message to stderr, and return
+> "", which seems better than dying of the thrown error entirely. --[[Joey]]