[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r2189 - GNUnet/src/server
From: |
grothoff |
Subject: |
[GNUnet-SVN] r2189 - GNUnet/src/server |
Date: |
Thu, 13 Oct 2005 13:00:08 -0700 (PDT) |
Author: grothoff
Date: 2005-10-13 13:00:07 -0700 (Thu, 13 Oct 2005)
New Revision: 2189
Modified:
GNUnet/src/server/connection.c
Log:
a crack at 950
Modified: GNUnet/src/server/connection.c
===================================================================
--- GNUnet/src/server/connection.c 2005-10-13 19:42:24 UTC (rev 2188)
+++ GNUnet/src/server/connection.c 2005-10-13 20:00:07 UTC (rev 2189)
@@ -2053,6 +2053,8 @@
didAssign = YES;
/* in the first round we cap by 2* previous utilization */
firstRound = YES;
+ for (u=0;u<activePeerCount;u++)
+ entries[u]->idealized_limit = 0;
while ( (schedulableBandwidth > CONNECTION_MAX_HOSTS_ * 100) &&
(activePeerCount > 0) &&
(didAssign == YES) ) {
@@ -2065,6 +2067,8 @@
unsigned int share;
share = entries[u]->idealized_limit + (unsigned int) (shares[u] *
schedulableBandwidth);
+ if (share < entries[u]->idealized_limit)
+ share = 0xFFFFFFFF; /* int overflow */
if ( (share > adjustedRR[u] * 2) &&
(firstRound == YES) )
share = adjustedRR[u] * 2;
@@ -2083,10 +2087,12 @@
for (u=0;u<activePeerCount;u++) {
unsigned int v = perm[u]; /* use perm to avoid preference to
low-numbered slots */
if ( (firstRound == NO) ||
- (entries[v]->idealized_limit / 2 < adjustedRR[u]) ) {
+ (entries[v]->idealized_limit < adjustedRR[u] * 2) ) {
unsigned int share;
share = entries[v]->idealized_limit + (unsigned int)
(schedulableBandwidth);
+ if (share < entries[u]->idealized_limit)
+ share = 0xFFFFFFFF; /* int overflow */
if ( (firstRound == YES) &&
(share > adjustedRR[u] * 2) )
share = adjustedRR[u] * 2;
@@ -2101,9 +2107,13 @@
(activePeerCount > 0) ) {
/* assign rest disregarding traffic limits */
perm = permute(WEAK, activePeerCount);
- for (u=0;u<activePeerCount;u++)
- entries[perm[u]]->idealized_limit
- += (unsigned int) (schedulableBandwidth/activePeerCount);
+ for (u=0;u<activePeerCount;u++) {
+ unsigned int share;
+
+ share = entries[perm[u]]->idealized_limit + (unsigned int)
(schedulableBandwidth/activePeerCount);
+ if (share > entries[perm[u]]->idealized_limit) /* no int-overflow? */
+ entries[perm[u]]->idealized_limit = share;
+ }
schedulableBandwidth = 0;
FREE(perm);
perm = NULL;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r2189 - GNUnet/src/server,
grothoff <=