* squid-2.3.DEVEL3.round_robin_clear_counter.patch * Fri Jan 7 04:48:25 CET 2000 Modified Files in squid/src cache_cf.c neighbors.c protos.h structs.h Changed round-robin peer selection to reset it's counters every 5 minutes. (it isn't really round-robin, more like least frequently used) Index: squid/src/cache_cf.c diff -u squid/src/cache_cf.c:1.1.1.35.2.3 squid/src/cache_cf.c:1.1.1.35.2.4 --- squid/src/cache_cf.c:1.1.1.35.2.3 Mon Nov 22 22:40:52 1999 +++ squid/src/cache_cf.c Fri Jan 7 04:48:22 2000 @@ -1017,6 +1017,7 @@ head = &(*head)->next; *head = p; Config.npeers++; + peerClearRR(p); } static void Index: squid/src/neighbors.c diff -u squid/src/neighbors.c:1.1.1.37.2.4 squid/src/neighbors.c:1.1.1.37.2.5 --- squid/src/neighbors.c:1.1.1.37.2.4 Sat Oct 30 22:22:43 1999 +++ squid/src/neighbors.c Fri Jan 7 04:48:24 2000 @@ -288,6 +288,18 @@ return q; } +/* This gets called every 5 minutes to clear the round-robin counter. */ +void +peerClearRR(void *data) +{ + peer *p = data; + p->rr_count -= p->rr_lastcount; + if (p->rr_count < 0) + p->rr_count = 0; + p->rr_lastcount = p->rr_count; + eventAdd("peerClearRR",peerClearRR, p, 5*60, 0); +} + peer * getDefaultParent(request_t * request) { Index: squid/src/protos.h diff -u squid/src/protos.h:1.1.1.45.2.4 squid/src/protos.h:1.1.1.45.2.5 --- squid/src/protos.h:1.1.1.45.2.4 Sun Nov 7 22:33:08 1999 +++ squid/src/protos.h Fri Jan 7 04:48:24 2000 @@ -628,6 +628,7 @@ extern peer *peerFindByNameAndPort(const char *, unsigned short); extern peer *getDefaultParent(request_t * request); extern peer *getRoundRobinParent(request_t * request); +EVH peerClearRR; extern peer *getAnyParent(request_t * request); extern lookup_t peerDigestLookup(peer * p, request_t * request, StoreEntry * entry); extern peer *neighborsDigestSelect(request_t * request, StoreEntry * entry); Index: squid/src/structs.h diff -u squid/src/structs.h:1.1.1.42.2.7 squid/src/structs.h:1.1.1.42.2.8 --- squid/src/structs.h:1.1.1.42.2.7 Wed Dec 22 00:02:23 1999 +++ squid/src/structs.h Fri Jan 7 04:48:25 2000 @@ -1102,6 +1102,7 @@ struct in_addr addresses[10]; int n_addresses; int rr_count; + int rr_lastcount; peer *next; int test_fd; #if USE_CARP