gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r18345 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r18345 - gnunet/src/ats
Date: Mon, 28 Nov 2011 15:38:15 +0100

Author: wachs
Date: 2011-11-28 15:38:15 +0100 (Mon, 28 Nov 2011)
New Revision: 18345

Modified:
   gnunet/src/ats/ats_api_scheduling.c
   gnunet/src/ats/gnunet-service-ats_addresses.c
Log:
fixing mantis #1970
bug: ats only deleted active addresses, but should delete all addresses with 
session removed and addrlen 0


Modified: gnunet/src/ats/ats_api_scheduling.c
===================================================================
--- gnunet/src/ats/ats_api_scheduling.c 2011-11-28 12:47:33 UTC (rev 18344)
+++ gnunet/src/ats/ats_api_scheduling.c 2011-11-28 14:38:15 UTC (rev 18345)
@@ -542,6 +542,18 @@
   address.address = plugin_address;
   address.address_length = plugin_address_length;
   address.transport_name = plugin_name;
+
+  if ((s == NULL) && (0 == address.address_length))
+  {
+    GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
+        "ATS returned invalid address for peer `%s' transport `%s' address 
length %i, session_id %i\n",
+        GNUNET_i2s(&address.peer) , address.transport_name, 
plugin_address_length, session_id);
+    GNUNET_break_op (0);
+    GNUNET_CLIENT_receive (sh->client, &process_ats_message, sh,
+                           GNUNET_TIME_UNIT_FOREVER_REL);
+    return;
+  }
+
   sh->suggest_cb (sh->suggest_cb_cls, &address, s, m->bandwidth_out,
                   m->bandwidth_in, atsi, ats_count);
 

Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2011-11-28 12:47:33 UTC 
(rev 18344)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2011-11-28 14:38:15 UTC 
(rev 18345)
@@ -316,7 +316,7 @@
                     aa->addr,
                     aa->addr_len)) )
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                "Deleting address for peer `%s': `%s'\n",
                GNUNET_i2s (&aa->peer), aa->plugin);
     if (GNUNET_YES == destroy_address (aa))
@@ -329,14 +329,18 @@
     GNUNET_break (0 == strcmp (info->plugin, aa->plugin));
   /* session died */
   aa->session_id = 0;
+
   if (GNUNET_YES == aa->active)
   {
     aa->active = GNUNET_NO;
     active_addr_count--;
-    if (aa->addr_len == 0)
-      (void) destroy_address (aa);
     recalculate_assigned_bw ();
   }
+
+  /* session == 0 and addrlen == 0 : destroy address */
+  if (aa->addr_len == 0)
+    (void) destroy_address (aa);
+
   return GNUNET_OK;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]