From 20b08238cff253267172403149bfea1b9c66f499 Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Thu, 23 Feb 2012 15:34:23 +0000 Subject: [PATCH] fix: ats suggested address for unknown plugin --- .../gnunet-service-transport_neighbours.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index 47baea956..3e8ef5aca 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c @@ -1495,7 +1495,24 @@ GST_neighbours_switch_to_address (const struct GNUNET_PeerIdentity *peer, /* Obtain an session for this address from plugin */ struct GNUNET_TRANSPORT_PluginFunctions *papi; papi = GST_plugins_find (address->transport_name); - GNUNET_assert (papi != NULL); + + if (papi == NULL) + { + /* we don't have the plugin for this address */ + GNUNET_ATS_address_destroyed (GST_ats, n->address, NULL); + + if (n->ats_suggest != GNUNET_SCHEDULER_NO_TASK) + GNUNET_SCHEDULER_cancel (n->ats_suggest); + n->ats_suggest = GNUNET_SCHEDULER_add_delayed (ATS_RESPONSE_TIMEOUT, + ats_suggest_cancel, + n); + GNUNET_ATS_suggest_address (GST_ats, &n->id); + GNUNET_HELLO_address_free (n->address); + n->address = NULL; + n->session = NULL; + return GNUNET_NO; + } + if (session == NULL) { n->session = papi->get_session (papi->cls, address); -- 2.25.1