diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-04-06 12:02:02 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-04-06 12:02:02 +0000 |
commit | 981e798d47ec0e997c4954816099ee48a2c2b7cb (patch) | |
tree | b3039d5a5cc1db3f3f6b732865ad5765beb5f968 /src | |
parent | ca1869a6d9604fb4c4a55b908a28898bd2b4e9f2 (diff) | |
download | gnunet-981e798d47ec0e997c4954816099ee48a2c2b7cb.tar.gz gnunet-981e798d47ec0e997c4954816099ee48a2c2b7cb.zip |
better quota violation handling
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/gnunet-service-transport.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index 5dcbc4baa..9956473a7 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c | |||
@@ -3178,24 +3178,25 @@ plugin_env_receive (void *cls, const struct GNUNET_PeerIdentity *peer, | |||
3178 | (ssize_t) msize)) | 3178 | (ssize_t) msize)) |
3179 | { | 3179 | { |
3180 | n->quota_violation_count++; | 3180 | n->quota_violation_count++; |
3181 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING | | 3181 | #if DEBUG_TRANSPORT |
3182 | GNUNET_ERROR_TYPE_BULK, | 3182 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
3183 | _ | 3183 | "Bandwidth quota (%u b/s) violation detected (total of %u).\n", |
3184 | ("Bandwidth quota (%u b/s) violation detected (total of %u).\n"), | ||
3185 | n->in_tracker.available_bytes_per_s__, | 3184 | n->in_tracker.available_bytes_per_s__, |
3186 | n->quota_violation_count); | 3185 | n->quota_violation_count); |
3187 | if (n->quota_violation_count > QUOTA_VIOLATION_DROP_THRESHOLD) | 3186 | #endif |
3188 | { | 3187 | /* Discount 32k per violation */ |
3189 | /* since we'll be dropping, only count this message for half so that | 3188 | GNUNET_BANDWIDTH_tracker_consume (&n->in_tracker, |
3190 | peers that send aggressively at the quota don't get "punished" | 3189 | - 32 * 1024); |
3191 | forever */ | ||
3192 | GNUNET_BANDWIDTH_tracker_consume (&n->in_tracker, | ||
3193 | - (ssize_t) msize / 2); | ||
3194 | } | ||
3195 | } | 3190 | } |
3196 | else | 3191 | else |
3197 | { | 3192 | { |
3198 | n->quota_violation_count = 0; /* back within limits */ | 3193 | if (n->quota_violation_count > 0) |
3194 | { | ||
3195 | /* try to add 32k back */ | ||
3196 | GNUNET_BANDWIDTH_tracker_consume (&n->in_tracker, | ||
3197 | 32 * 1024); | ||
3198 | n->quota_violation_count--; | ||
3199 | } | ||
3199 | } | 3200 | } |
3200 | GNUNET_STATISTICS_update (stats, | 3201 | GNUNET_STATISTICS_update (stats, |
3201 | gettext_noop ("# payload received from other peers"), | 3202 | gettext_noop ("# payload received from other peers"), |