summaryrefslogtreecommitdiff
path: root/src/exchange
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2017-10-06 21:41:41 +0200
committerChristian Grothoff <christian@grothoff.org>2017-10-06 21:41:41 +0200
commit98b7444a7b122498e5b6d693c4503b1702763307 (patch)
tree2dfdac7f2a89a8ee8b10cf1cd2474dfa62516938 /src/exchange
parent9b585fd066c238485b161b7664901e9d23ecf56b (diff)
downloadexchange-98b7444a7b122498e5b6d693c4503b1702763307.tar.gz
exchange-98b7444a7b122498e5b6d693c4503b1702763307.tar.bz2
exchange-98b7444a7b122498e5b6d693c4503b1702763307.zip
handle hypothetical failure of plugin not found
Diffstat (limited to 'src/exchange')
-rw-r--r--src/exchange/taler-exchange-aggregator.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/exchange/taler-exchange-aggregator.c b/src/exchange/taler-exchange-aggregator.c
index eb97edbaf..5e0c52c71 100644
--- a/src/exchange/taler-exchange-aggregator.c
+++ b/src/exchange/taler-exchange-aggregator.c
@@ -1620,6 +1620,19 @@ wire_prepare_cb (void *cls,
"Starting wire transfer %llu\n",
(unsigned long long) rowid);
wpd->wp = find_plugin (wire_method);
+ if (NULL == wpd->wp)
+ {
+ /* Should really never happen here, as when we get
+ here the plugin should be in the cache. */
+ GNUNET_break (0);
+ db_plugin->rollback (db_plugin->cls,
+ wpd->session);
+ global_ret = GNUNET_SYSERR;
+ GNUNET_SCHEDULER_shutdown ();
+ GNUNET_free (wpd);
+ wpd = NULL;
+ return;
+ }
wpd->eh = wpd->wp->wire_plugin->execute_wire_transfer (wpd->wp->wire_plugin->cls,
buf,
buf_size,