--- squid-2.3.STABLE2v5-base/src/delay_pools.c	Fri Mar  3 18:26:13 2000
+++ squid-2.3.STABLE2v4/src/delay_pools.c	Fri Mar  3 19:21:30 2000
@@ -292,6 +292,10 @@
     ch.my_addr = r->my_addr;
     ch.my_port = r->my_port;
     ch.request = r;
+    if( r->client_addr.s_addr == INADDR_BROADCAST ) {
+        debug(77, 2) ("delayClient: WARNING: Called with 'allones' address, ignoring\n" );
+        return delayId(0, 0);
+    }
     for (pool = 0; pool < Config.Delay.pools; pool++) {
 	if (aclCheckFast(Config.Delay.access[pool], &ch))
 	    break;
@@ -444,6 +448,7 @@
     int individual_restore_bytes, network_restore_bytes;
     int mpos;
     unsigned int i, j;
+	char individual_255_used;
     /* delaySetSpec may be pointer to partial structure so MUST pass by
      * reference.
      */
@@ -459,21 +464,14 @@
 	return;
     individual_restore_bytes *= incr;
     network_restore_bytes *= incr;
-    if (class3->network_255_used)
-	i = 255;
-    else
-	i = 0;
-    for (;;) {
+    for (i = 0; i < ((class3->network_255_used) ? NET_MAP_SZ : NET_MAP_SZ - 1); ++i) {
 	assert(i < NET_MAP_SZ);
 	if (i != 255 && class3->network_map[i] == 255)
 	    return;
 	if (individual_restore_bytes != -incr) {
 	    mpos = i << 8;
-	    if (class3->individual_255_used[i / 8] & (1 << (i % 8)))
-		j = 255;
-	    else
-		j = 0;
-	    for (;;) {
+		individual_255_used = class3->individual_255_used[i / 8] & (1 << (i % 8));
+	    for (j = 0; j < ((individual_255_used) ? IND_MAP_SZ : IND_MAP_SZ - 1); ++j, ++mpos ) {
 		assert(i < NET_MAP_SZ);
 		assert(j < IND_MAP_SZ);
 		if (j != 255 && class3->individual_map[i][j] == 255)
@@ -483,11 +481,6 @@
 		    (class3->individual[mpos] += individual_restore_bytes) >
 		    rates->individual.max_bytes)
 		    class3->individual[mpos] = rates->individual.max_bytes;
-		mpos++;
-		if (j == (IND_MAP_SZ - 1))
-		    mpos -= 256;
-		if (++j == (IND_MAP_SZ - 1))
-		    break;
 	    }
 	}
 	if (network_restore_bytes != -incr &&
@@ -495,8 +488,6 @@
 	    (class3->network[i] += network_restore_bytes) >
 	    rates->network.max_bytes)
 	    class3->network[i] = rates->network.max_bytes;
-	if (++i == (NET_MAP_SZ - 1))
-	    return;
     }
 }
 

