dhtlog updates
[oweals/gnunet.git] / src / util / bandwidth.c
index 2b533128d6f8fc18c379f3f392a2f5c85ed65573..e47df4382a48562fdb4df896ab6850b2aaaf64c8 100644 (file)
@@ -211,7 +211,7 @@ int
 GNUNET_BANDWIDTH_tracker_consume (struct GNUNET_BANDWIDTH_Tracker *av,
                                  ssize_t size)
 {
-  uint64_t nc;
+  int64_t nc;
 
 #if DEBUG_BANDWIDTH
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -262,10 +262,7 @@ GNUNET_BANDWIDTH_tracker_get_delay (struct GNUNET_BANDWIDTH_Tracker *av,
                                    size_t size)
 {
   struct GNUNET_TIME_Relative ret;
-  struct GNUNET_TIME_Absolute now;
-  uint64_t delta_avail;
-  uint64_t delta_time;
-  uint64_t bytes_needed;
+  int64_t bytes_needed;
 
   if (av->available_bytes_per_s__ == 0)
     {
@@ -277,10 +274,8 @@ GNUNET_BANDWIDTH_tracker_get_delay (struct GNUNET_BANDWIDTH_Tracker *av,
       return GNUNET_TIME_UNIT_FOREVER_REL;
     }
   update_tracker (av);
-  now = GNUNET_TIME_absolute_get ();
-  delta_time = now.value - av->last_update__.value;
-  delta_avail = (delta_time * ((unsigned long long) av->available_bytes_per_s__) + 500LL) / 1000LL;
-  if (delta_avail >= size)
+  bytes_needed = size + av->consumption_since_last_update__;
+  if (bytes_needed <= 0)
     {
 #if DEBUG_BANDWIDTH
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -290,7 +285,6 @@ GNUNET_BANDWIDTH_tracker_get_delay (struct GNUNET_BANDWIDTH_Tracker *av,
 #endif
       return GNUNET_TIME_UNIT_ZERO;
     }
-  bytes_needed = size - delta_avail;
   ret.value = 1000LL * bytes_needed / (unsigned long long) av->available_bytes_per_s__;
 #if DEBUG_BANDWIDTH
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,