--- 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; } }