-skeletons for transport-ng
[oweals/gnunet.git] / src / ats / gnunet-service-ats_normalization.c
index c10e5070f54372eac8f9bda941cadde11ba3f9bb..c2d68292ce8c5c5a7bfd9a1919b9910efc2632a8 100644 (file)
@@ -1,6 +1,6 @@
 /*
  This file is part of GNUnet.
- Copyright (C) 2011-2015 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2011-2015 GNUnet e.V.
 
  GNUnet is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
  You should have received a copy of the GNU General Public License
  along with GNUnet; see the file COPYING.  If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
  */
 
 /**
@@ -85,8 +85,10 @@ update_avg (uint64_t current_val,
       sum += (double) ni->atsi_abs[c1];
     }
   }
-  GNUNET_assert (0 != count);
-  ni->avg = sum / count;
+  if (0 == count)
+    ni->avg = current_val; /* must be UINT64_MAX */
+  else
+    ni->avg = sum / count;
 }
 
 
@@ -230,7 +232,6 @@ GAS_normalization_update_property (struct ATS_Address *address)
 {
   const struct GNUNET_ATS_Properties *prop = &address->properties;
   struct PropertyRange range;
-  int range_changed;
 
   LOG (GNUNET_ERROR_TYPE_DEBUG,
        "Updating properties for peer `%s'\n",
@@ -255,25 +256,23 @@ GAS_normalization_update_property (struct ATS_Address *address)
   {
     /* limits changed, (re)normalize all addresses */
     property_range = range;
-    range_changed = GNUNET_YES;
-  }
-  if (GNUNET_YES == range_changed)
     GNUNET_CONTAINER_multipeermap_iterate (GSA_addresses,
                                            &normalize_address,
                                            NULL);
-  else
-    normalize_address (NULL,
-                       &address->peer,
-                       address);
-  /* after all peers have been updated, notify about changes */
-  if (GNUNET_YES == range_changed)
     GNUNET_CONTAINER_multipeermap_iterate (GSA_addresses,
                                            &notify_change,
                                            NULL);
+  }
   else
+  {
+    /* renormalize just this one address */
+    normalize_address (NULL,
+                       &address->peer,
+                       address);
     notify_change (NULL,
                    &address->peer,
                    address);
+  }
   GAS_plugin_solver_unlock ();
 }