fix: do not assert if plugin sends you invalid network type
authorMatthias Wachs <wachs@net.in.tum.de>
Tue, 2 Jul 2013 11:44:27 +0000 (11:44 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Tue, 2 Jul 2013 11:44:27 +0000 (11:44 +0000)
src/ats/gnunet-service-ats-solver_proportional.c

index d6b277406685d6e78a0b31a5f0d3a026cb514a5e..bd5caa8499c8030086a2fa253e7af5808003cf7f 100644 (file)
@@ -667,6 +667,7 @@ get_network (struct GAS_PROPORTIONAL_Handle *s, uint32_t type)
   {
       if (s->network_entries[c].type == type)
         return &s->network_entries[c];
+
   }
   return NULL;
 }
@@ -1109,7 +1110,16 @@ GAS_proportional_address_update (void *solver,
 
         /* set new network type */
         new_net = get_network (solver, addr_net);
-        GNUNET_assert (NULL != new_net);
+        if (NULL == new_net)
+        {
+          /* Address changed to invalid network... */
+          LOG (GNUNET_ERROR_TYPE_ERROR, _("Cannot find network of type `%u' %s\n"),
+                       addr_net, GNUNET_ATS_print_network_type (addr_net));
+          address->assigned_bw_in = GNUNET_BANDWIDTH_value_init (0);
+          address->assigned_bw_out = GNUNET_BANDWIDTH_value_init (0);
+          s->bw_changed  (s->bw_changed_cls, address);
+          return;
+        }
         address->solver_information = new_net;
 
         /* Add to new network and update*/