gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r35180 - gnunet/src/ats
Date: Sun, 8 Feb 2015 21:55:26 +0100

Author: grothoff
Date: 2015-02-08 21:55:25 +0100 (Sun, 08 Feb 2015)
New Revision: 35180

Modified:
   gnunet/src/ats/plugin_ats_proportional.c
   gnunet/src/ats/test_ats_api_common.c
   gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c
Log:
-getting there...

Modified: gnunet/src/ats/plugin_ats_proportional.c
===================================================================
--- gnunet/src/ats/plugin_ats_proportional.c    2015-02-08 19:59:05 UTC (rev 
35179)
+++ gnunet/src/ats/plugin_ats_proportional.c    2015-02-08 20:55:25 UTC (rev 
35180)
@@ -917,29 +917,23 @@
  * are different switch
  *
  * @param s solver handle
+ * @param current_address the address currently active for the peer,
+ *        NULL for none
  * @param peer the peer to check
  * return the new address or NULL if no update was performed
   */
 static struct ATS_Address *
 update_active_address (struct GAS_PROPORTIONAL_Handle *s,
+                       struct ATS_Address *current_address,
                        const struct GNUNET_PeerIdentity *peer)
 {
   struct ATS_Address *best_address;
-  struct ATS_Address *current_address;
   struct AddressWrapper *asi;
   struct Network *net;
 
-  current_address = get_active_address (s,
-                                        peer);
   best_address = get_best_address (s,
                                    s->env->addresses,
                                    peer);
-  LOG (GNUNET_ERROR_TYPE_INFO,
-       "Peer `%s' has active address %p and best address %p\n",
-       GNUNET_i2s (peer),
-       current_address,
-       best_address);
-
   if (NULL != current_address)
   {
     GNUNET_assert (GNUNET_YES == current_address->active);
@@ -950,9 +944,7 @@
       /* We switch to a new address (or to none),
          mark old address as inactive */
       LOG (GNUNET_ERROR_TYPE_INFO,
-           "Disabling previous %s address %p for peer `%s'\n",
-           (GNUNET_NO == current_address->active) ? "inactive" : "active",
-           current_address,
+           "Disabling previous active address for peer `%s'\n",
            GNUNET_i2s (peer));
 
       asi = current_address->solver_information;
@@ -997,7 +989,6 @@
   }
 
   asi = best_address->solver_information;
-  GNUNET_assert (NULL != asi);
   net = asi->network;
 
   /* Mark address as active */
@@ -1019,7 +1010,8 @@
        best_address,
        GNUNET_i2s (peer));
   /* Distribute bandwidth */
-  distribute_bandwidth_in_network (s, net);
+  distribute_bandwidth_in_network (s,
+                                   net);
   return best_address;
 }
 
@@ -1082,6 +1074,8 @@
   struct AddressWrapper *asi;
 
   best_address = update_active_address (s,
+                                        get_active_address (s,
+                                                            peer),
                                         peer);
   if (NULL == best_address)
     return;
@@ -1152,11 +1146,13 @@
     return;
   }
   s->bulk_lock--;
-  if ((0 == s->bulk_lock) && (0 < s->bulk_requests))
+  if ( (0 == s->bulk_lock) &&
+       (0 < s->bulk_requests) )
   {
     LOG (GNUNET_ERROR_TYPE_INFO,
          "No lock pending, recalculating\n");
-    distribute_bandwidth_in_network (s, NULL);
+    distribute_bandwidth_in_network (s,
+                                     NULL);
     s->bulk_requests = 0;
   }
 }
@@ -1222,21 +1218,24 @@
                             1,
                             GNUNET_NO);
 
+  if (0 !=
+      s->env->get_connectivity (s->env->cls,
+                                &address->peer))
+  {
+    /* This peer is requested, find best address */
+    update_active_address (s,
+                           get_active_address (s,
+                                               &address->peer),
+                           &address->peer);
+  }
   LOG (GNUNET_ERROR_TYPE_INFO,
        "Added new address for `%s', now total %u and active %u addresses in 
network `%s'\n",
-    GNUNET_i2s (&address->peer),
+       GNUNET_i2s (&address->peer),
        net->total_addresses,
        net->active_addresses,
        net->desc);
 
-  if (0 ==
-      s->env->get_connectivity (s->env->cls,
-                                &address->peer))
-    return; /* Peer is not requested */
 
-  /* This peer is requested, find best address */
-  update_active_address (s,
-                         &address->peer);
 }
 
 
@@ -1279,16 +1278,11 @@
   if (GNUNET_YES == address->active)
   {
     /* Address was active, remove from network and update quotas*/
-    address->active = GNUNET_NO;
     address->assigned_bw_in = 0;
     address->assigned_bw_out = 0;
-    address_decrement_active (s, net);
-    /* FIXME: this may trigger the solver unnecessarily,
-       especially if update_active_address() succeeds! */
-    distribute_bandwidth_in_network (s, net);
-
     if (NULL ==
         update_active_address (s,
+                               address,
                                &address->peer))
     {
       /* No alternative address found, disconnect peer */
@@ -1299,6 +1293,7 @@
       s->env->bandwidth_changed_cb (s->env->cls,
                                     address);
     }
+    distribute_bandwidth_in_network (s, net);
   }
   GNUNET_free (aw);
   address->solver_information = NULL;

Modified: gnunet/src/ats/test_ats_api_common.c
===================================================================
--- gnunet/src/ats/test_ats_api_common.c        2015-02-08 19:59:05 UTC (rev 
35179)
+++ gnunet/src/ats/test_ats_api_common.c        2015-02-08 20:55:25 UTC (rev 
35180)
@@ -44,6 +44,7 @@
   dest->addr_len = addrlen;
 }
 
+
 void
 free_test_address (struct Test_Address *dest)
 {
@@ -53,37 +54,46 @@
   dest->addr = NULL;
 }
 
+
 int
-compare_addresses (const struct GNUNET_HELLO_Address *address1, void *session1,
-                   const struct GNUNET_HELLO_Address *address2, void *session2)
+compare_addresses (const struct GNUNET_HELLO_Address *address1,
+                   void *session1,
+                   const struct GNUNET_HELLO_Address *address2,
+                   void *session2)
 {
-  if (0 != memcmp (&address1->peer, &address2->peer, sizeof (struct 
GNUNET_PeerIdentity)))
+  if (0 !=
+      memcmp (&address1->peer,
+              &address2->peer,
+              sizeof (struct GNUNET_PeerIdentity)))
   {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid peer 
id'\n");
-      return GNUNET_SYSERR;
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Suggestion with invalid peer id'\n");
+    return GNUNET_SYSERR;
   }
   if (0 != strcmp (address1->transport_name, address2->transport_name))
   {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid 
plugin'\n");
-      return GNUNET_SYSERR;
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Suggestion with invalid plugin'\n");
+    return GNUNET_SYSERR;
   }
   if (address1->address_length != address2->address_length)
   {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid address 
length\n");
-      return GNUNET_SYSERR;
-
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Suggestion with invalid address length\n");
+    return GNUNET_SYSERR;
   }
-  else if (0 != memcmp (address1->address, address2->address, 
address2->address_length))
+  if (0 != memcmp (address1->address, address2->address, 
address2->address_length))
   {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid 
address\n");
-      return GNUNET_SYSERR;
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Suggestion with invalid address\n");
+    return GNUNET_SYSERR;
   }
   if (session1 != session2)
   {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Suggestion with invalid session1 
%p vs session2 %p'\n",
-                  session1, session2);
-      return GNUNET_SYSERR;
-
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Suggestion with invalid session1 %p vs session2 %p'\n",
+                session1, session2);
+    return GNUNET_SYSERR;
   }
   return GNUNET_OK;
 }

Modified: gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c
===================================================================
--- gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c   
2015-02-08 19:59:05 UTC (rev 35179)
+++ gnunet/src/ats/test_ats_solver_alternative_after_delete_address.c   
2015-02-08 20:55:25 UTC (rev 35180)
@@ -145,17 +145,20 @@
     GNUNET_ATS_scheduling_done (sched_ats);
     sched_ats = NULL;
   }
-
-  GNUNET_STATISTICS_watch_cancel (stats, "ats", "# addresses", &stat_cb, NULL);
+  GNUNET_STATISTICS_watch_cancel (stats,
+                                  "ats",
+                                  "# addresses",
+                                  &stat_cb, NULL);
   if (NULL != stats)
   {
     GNUNET_STATISTICS_destroy (stats, GNUNET_NO);
     stats = NULL;
   }
-
   free_test_address (&test_addr);
   GNUNET_free_non_null (first_suggestion);
+  first_suggestion = NULL;
   GNUNET_free_non_null (second_suggestion);
+  second_suggestion = NULL;
   ret = 0;
 }
 
@@ -253,8 +256,11 @@
         return;
       }
 
-      if (0 != memcmp (address->address, first_suggestion->address,
-          (first_suggestion->address_length < address->address_length) ? 
first_suggestion->address_length : address->address_length))
+      if (0 !=
+          memcmp (address->address,
+                  first_suggestion->address,
+                  (first_suggestion->address_length < address->address_length)
+                  ? first_suggestion->address_length : 
address->address_length))
       {
         GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                     "Received 2nd sugggestion for peer `%s' : `%s'\n",




reply via email to

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