aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-04-06 12:02:02 +0000
committerChristian Grothoff <christian@grothoff.org>2010-04-06 12:02:02 +0000
commit981e798d47ec0e997c4954816099ee48a2c2b7cb (patch)
treeb3039d5a5cc1db3f3f6b732865ad5765beb5f968 /src
parentca1869a6d9604fb4c4a55b908a28898bd2b4e9f2 (diff)
downloadgnunet-981e798d47ec0e997c4954816099ee48a2c2b7cb.tar.gz
gnunet-981e798d47ec0e997c4954816099ee48a2c2b7cb.zip
better quota violation handling
Diffstat (limited to 'src')
-rw-r--r--src/transport/gnunet-service-transport.c27
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"),