gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r29616 - gnunet/src/ats
Date: Thu, 26 Sep 2013 15:03:04 +0200

Author: wachs
Date: 2013-09-26 15:03:04 +0200 (Thu, 26 Sep 2013)
New Revision: 29616

Modified:
   gnunet/src/ats/gnunet-service-ats-solver_mlp.c
Log:
disconnect peer if no address is available after deletion


Modified: gnunet/src/ats/gnunet-service-ats-solver_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats-solver_mlp.c      2013-09-26 12:59:41 UTC 
(rev 29615)
+++ gnunet/src/ats/gnunet-service-ats-solver_mlp.c      2013-09-26 13:03:04 UTC 
(rev 29616)
@@ -1443,6 +1443,7 @@
   struct ATS_Peer *p;
   struct GAS_MLP_Handle *mlp = solver;
   struct MLP_information *mlpi;
+  int was_active;
 
   GNUNET_assert (NULL != solver);
   GNUNET_assert (NULL != address);
@@ -1454,7 +1455,10 @@
     GNUNET_free (mlpi);
     address->solver_information = NULL;
   }
+  was_active = address->active;
   address->active = GNUNET_NO;
+  address->assigned_bw_in = BANDWIDTH_ZERO;
+  address->assigned_bw_out = BANDWIDTH_ZERO;
 
   /* Is this peer included in the problem? */
   if (NULL == (p = GNUNET_CONTAINER_multihashmap_get (mlp->requested_peers, 
&address->peer.hashPubKey)))
@@ -1474,6 +1478,15 @@
   {
     GAS_mlp_solve_problem (solver);
   }
+  if (GNUNET_YES == was_active)
+  {
+    if (NULL == GAS_mlp_get_preferred_address (solver, &address->peer))
+    {
+      /* No alternative address, disconnecting peer */
+      mlp->bw_changed_cb (mlp->bw_changed_cb_cls, address);
+    }
+  }
+
   return;
 }
 




reply via email to

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