X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Fbandwidth.c;h=9ba6bd5ec018a8eea25ae76dcff096d9588acf78;hb=ca1869a6d9604fb4c4a55b908a28898bd2b4e9f2;hp=6cca58995a03b4047923d6a231e5a5fe05fd9d88;hpb=85a2e0d5b24495e0b2595a76a3205c4970a71fce;p=oweals%2Fgnunet.git diff --git a/src/util/bandwidth.c b/src/util/bandwidth.c index 6cca58995..9ba6bd5ec 100644 --- a/src/util/bandwidth.c +++ b/src/util/bandwidth.c @@ -84,10 +84,10 @@ GNUNET_BANDWIDTH_value_get_available_until (struct GNUNET_BANDWIDTH_Value32NBO b #if DEBUG_BANDWIDTH GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Bandwidth has %llu bytes available until deadline in %llums\n", - (unsigned long long) (b * deadline.value / 1000LL), + (unsigned long long) ((b * deadline.value + 500LL) / 1000LL), deadline.value); #endif - return b * deadline.value / 1000LL; + return (b * deadline.value + 500LL) / 1000LL; } @@ -177,7 +177,7 @@ update_tracker (struct GNUNET_BANDWIDTH_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__)) / 1000LL; + delta_avail = (delta_time * ((unsigned long long) av->available_bytes_per_s__) + 500LL) / 1000LL; if (av->consumption_since_last_update__ >= delta_avail) { av->consumption_since_last_update__ -= delta_avail; @@ -186,7 +186,7 @@ update_tracker (struct GNUNET_BANDWIDTH_Tracker *av) else { left_bytes = delta_avail - av->consumption_since_last_update__; - avail_per_ms = ((unsigned long long) av->available_bytes_per_s__) / 1000LL; + avail_per_ms = ((unsigned long long) av->available_bytes_per_s__ + 500LL) / 1000LL; if (avail_per_ms > 0) { left_time_ms = left_bytes / avail_per_ms; @@ -257,15 +257,16 @@ GNUNET_BANDWIDTH_tracker_consume (struct GNUNET_BANDWIDTH_Tracker *av, { #if DEBUG_BANDWIDTH GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Tracker %p consumption is above limit\n", - av); + "Tracker %p consumption %llu bytes above limit\n", + av, + (unsigned long long) av->consumption_since_last_update__); #endif return GNUNET_YES; } } else { - av->last_update__.value -= (size * av->available_bytes_per_s__) / 1000LL; + av->last_update__.value -= (size * av->available_bytes_per_s__ + 500LL) / 1000LL; update_tracker (av); } return GNUNET_NO; @@ -303,7 +304,7 @@ GNUNET_BANDWIDTH_tracker_get_delay (struct GNUNET_BANDWIDTH_Tracker *av, 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__)) / 1000LL; + delta_avail = (delta_time * ((unsigned long long) av->available_bytes_per_s__) + 500LL) / 1000LL; if (delta_avail >= size) { #if DEBUG_BANDWIDTH