- av->consumption_since_last_update__ -= delta_avail;
- av->last_update__ = now;
- }
- else
- {
- left_bytes = delta_avail - av->consumption_since_last_update__;
- 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;
- if (left_time_ms > ((unsigned long long) av->max_carry_s__) * 1000LL)
- {
- /* need to limit accumulation of unused bandwidth */
- left_time_ms = ((unsigned long long) av->max_carry_s__) * 1000LL;
- if (left_time_ms * avail_per_ms < GNUNET_SERVER_MAX_MESSAGE_SIZE)
- {
- /* need to still allow GNUNET_SERVER_MAX_MESSAGE_SIZE accumulation */
- if (left_bytes > GNUNET_SERVER_MAX_MESSAGE_SIZE)
- left_bytes = GNUNET_SERVER_MAX_MESSAGE_SIZE;
- left_time_ms = left_bytes / avail_per_ms;
- }
- }
- }
+ left_bytes = - av->consumption_since_last_update__;
+ max_carry = av->available_bytes_per_s__ * av->max_carry_s__;
+ if (max_carry < GNUNET_SERVER_MAX_MESSAGE_SIZE)
+ max_carry = GNUNET_SERVER_MAX_MESSAGE_SIZE;
+ if (max_carry > left_bytes)
+ av->consumption_since_last_update__ = -left_bytes;