From 05177a046c5d292f7b4c4e7124309ad70555d320 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 25 Mar 2010 14:44:05 +0000 Subject: [PATCH] more gentle enforcement --- src/transport/gnunet-service-transport.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index b097cfc53..84f939578 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c @@ -3171,10 +3171,22 @@ plugin_env_receive (void *cls, const struct GNUNET_PeerIdentity *peer, ntohs (message->type), GNUNET_i2s (peer)); #endif if (GNUNET_YES == GNUNET_BANDWIDTH_tracker_consume (&n->in_tracker, - msize)) - n->quota_violation_count++; + (ssize_t) msize)) + { + n->quota_violation_count++; + if (n->quota_violation_count > QUOTA_VIOLATION_DROP_THRESHOLD) + { + /* since we'll be dropping, only count this message for half so that + peers that send aggressively at the quota don't get "punished" + forever */ + GNUNET_BANDWIDTH_tracker_consume (&n->in_tracker, + - (ssize_t) msize / 2); + } + } else - n->quota_violation_count = 0; /* back within limits */ + { + n->quota_violation_count = 0; /* back within limits */ + } GNUNET_STATISTICS_update (stats, gettext_noop ("# payload received from other peers"), msize, -- 2.25.1