gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r4907 - GNUnet/src/server


From: gnunet
Subject: [GNUnet-SVN] r4907 - GNUnet/src/server
Date: Sun, 3 Jun 2007 01:27:28 -0600 (MDT)

Author: grothoff
Date: 2007-06-03 01:27:28 -0600 (Sun, 03 Jun 2007)
New Revision: 4907

Modified:
   GNUnet/src/server/connection.c
Log:
extra check

Modified: GNUnet/src/server/connection.c
===================================================================
--- GNUnet/src/server/connection.c      2007-06-03 07:08:15 UTC (rev 4906)
+++ GNUnet/src/server/connection.c      2007-06-03 07:27:28 UTC (rev 4907)
@@ -760,12 +760,11 @@
   max = 0;
 
   for(i = 0; i < count; i++) {
-    if(entries[i]->len <= left) {
+    if (entries[i]->len <= left) {
       entries[i]->knapsackSolution = YES;
       left -= entries[i]->len;
       max += entries[i]->pri;
-    }
-    else {
+    } else {
       entries[i]->knapsackSolution = NO;
     }
   }
@@ -792,28 +791,21 @@
   int max;
   long long *v;
   int *efflen;
-  cron_t startTime;
-  cron_t endTime;
   SendEntry ** entries;
   unsigned int count;
 #define VARR(i,j) v[(i)+(j)*(count+1)]
 
-  if(available < 0) {
-    GE_BREAK(ectx, 0);
-    return -1;
-  }
   ENTRY();
   entries = be->sendBuffer;
   count = be->sendBufferSize;
-  startTime = get_time();
 
   /* fast test: schedule everything? */
   max = 0;
-  for(i = 0; i < count; i++)
+  for (i=0;i<count;i++)
     max += entries[i]->len;
-  if(max <= available) {
+  if (max <= available) {
     /* short cut: take everything! */
-    for(i = 0; i < count; i++)
+    for (i = 0; i < count; i++)
       entries[i]->knapsackSolution = YES;
     max = 0;
     for(i = 0; i < count; i++)
@@ -827,10 +819,9 @@
      4, this is probably a good idea (TM)  :-) */
   efflen = MALLOC(sizeof(int) * count);
   max = available;
-  for(i = 0; i < count; i++) {
-    if(entries[i]->len > 0)
-      max = gcd(max, entries[i]->len);
-  }
+  for(i = 0; i < count; i++) 
+    if (entries[i]->len > 0)
+      max = gcd(max, entries[i]->len);  
   GE_ASSERT(ectx, max != 0);
   available = available / max;
   for(i = 0; i < count; i++)
@@ -860,19 +851,6 @@
       }
       else
         VARR(i, j) = leave_val;
-#if 0      
-      printf("i: %d j: %d (of %d) efflen: %d take: %d "
-            "leave %d e[i-1]->pri %d VAR(i-1,j-eff) %lld VAR(i,j) %lld\n",
-            i,
-            j,
-            available,
-            efflen[i-1],
-            take_val,
-            leave_val,
-            entries[i-1]->pri,
-            VARR(i-1,j-efflen[i-1]),
-            VARR(i,j));
-#endif
     }
   }
 
@@ -900,7 +878,6 @@
   GE_ASSERT(ectx, j == 0);
   FREE(v);
   FREE(efflen);
-  endTime = get_time();
 
   return max;
 }
@@ -942,17 +919,25 @@
   delta = load - 50;            /* now delta is in [1,50] with 50 == 100% load 
*/
   if(delta * delta * delta > priority) {
 #if DEBUG_POLICY
-    GE_LOG(ectx, GE_DEBUG | GE_REQUEST | GE_USER,
-        "Network load is too high (%d%%, priority is %u, require %d), "
-        "dropping outgoing.\n", load, priority, delta * delta * delta);
+    GE_LOG(ectx, 
+          GE_DEBUG | GE_REQUEST | GE_USER,
+          "Network load is too high (%d%%, priority is %u, require %d), "
+          "dropping outgoing.\n", 
+          load,
+          priority,
+          delta * delta * delta);
 #endif
     return SYSERR;              /* drop */
   }
   else {
 #if DEBUG_POLICY
-    GE_LOG(ectx, GE_DEBUG | GE_REQUEST | GE_USER,
-        "Network load is ok (%d%%, priority is %u >= %d), "
-        "sending outgoing.\n", load, priority, delta * delta * delta);
+    GE_LOG(ectx,
+          GE_DEBUG | GE_REQUEST | GE_USER,
+          "Network load is ok (%d%%, priority is %u >= %d), "
+          "sending outgoing.\n", 
+          load, 
+          priority, 
+          delta * delta * delta);
 #endif
     return OK;                  /* allow */
   }
@@ -1133,10 +1118,15 @@
 #endif
     }
     j = 0;
-    for (i = 0; i < be->sendBufferSize; i++)
-      if (be->sendBuffer[i]->knapsackSolution == YES)
+    totalMessageSize = 0;
+    for (i = 0; i < be->sendBufferSize; i++) {
+      if (be->sendBuffer[i]->knapsackSolution == YES) {
+       totalMessageSize += be->sendBuffer[i]->len;
         j++;
-    if (j == 0) {
+      }
+    }
+    if ( (j == 0) ||
+        (totalMessageSize > be->session.mtu - sizeof(P2P_PACKET_HEADER)) ) {
       GE_BREAK(ectx, 0);
       GE_LOG(ectx,
             GE_ERROR | GE_BULK | GE_DEVELOPER,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]