]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 2051: 'default' cache_peer option does not match documentation
authorAmos Jeffries <squid3@treenet.co.nz>
Wed, 20 Jul 2011 07:04:54 +0000 (19:04 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Wed, 20 Jul 2011 07:04:54 +0000 (19:04 +1200)
Move the default parent to second-lowest priority on the parent
selection. This also allows the other more delicate balancing
algorithms to work properly with a default configured.

sourcehash and userhash are reversed in priority to simplify the
selection code around #if..#endif once default is moved.

Also, getAnyParent() is dropped. It is redundant with the FIRSTUP
 algorithm.

src/neighbors.cc
src/peer_select.cc
src/protos.h

index eaea4f5f18583cc31bcc1e7e62aacf0cea21252d..398ad00141424624a58ec4d38e05ba7ebd6f927e 100644 (file)
@@ -476,33 +476,6 @@ getDefaultParent(HttpRequest * request)
     return NULL;
 }
 
-/*
- * XXX DW thinks this function is equivalent to/redundant with
- * getFirstUpParent().  peerHTTPOkay() only returns true if the
- * peer is UP anyway, so this function would not return a
- * DOWN parent.
- */
-peer *
-getAnyParent(HttpRequest * request)
-{
-    peer *p = NULL;
-
-    for (p = Config.peers; p; p = p->next) {
-        if (neighborType(p, request) != PEER_PARENT)
-            continue;
-
-        if (!peerHTTPOkay(p, request))
-            continue;
-
-        debugs(15, 3, "getAnyParent: returning " << p->host);
-
-        return p;
-    }
-
-    debugs(15, 3, "getAnyParent: returning NULL");
-    return NULL;
-}
-
 peer *
 getNextPeer(peer * p)
 {
index ea8255bb4b80070c948c7bca27f908669965f000..0c512c0d230acf6840d7b96704eec32bde7ebf38 100644 (file)
@@ -594,14 +594,12 @@ peerGetSomeParent(ps_state * ps)
     if (ps->direct == DIRECT_YES)
         return;
 
-    if ((p = getDefaultParent(request))) {
-        code = DEFAULT_PARENT;
+    if ((p = peerSourceHashSelectParent(request))) {
+        code = SOURCEHASH_PARENT;
 #if USE_AUTH
     } else if ((p = peerUserHashSelectParent(request))) {
         code = USERHASH_PARENT;
 #endif
-    } else if ((p = peerSourceHashSelectParent(request))) {
-        code = SOURCEHASH_PARENT;
     } else if ((p = carpSelectParent(request))) {
         code = CARP;
     } else if ((p = getRoundRobinParent(request))) {
@@ -610,8 +608,8 @@ peerGetSomeParent(ps_state * ps)
         code = ROUNDROBIN_PARENT;
     } else if ((p = getFirstUpParent(request))) {
         code = FIRSTUP_PARENT;
-    } else if ((p = getAnyParent(request))) {
-        code = ANY_OLD_PARENT;
+    } else if ((p = getDefaultParent(request))) {
+        code = DEFAULT_PARENT;
     }
 
     if (code != HIER_NONE) {
index 854d7d765c7a0b67181533e3c91dd23f53192f11..9b49041631e6e559b9e1e59dca29055ed4e73db1 100644 (file)
@@ -360,7 +360,6 @@ SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
 SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
 SQUIDCEXTERN void peerClearRRStart(void);
 SQUIDCEXTERN void peerClearRR(void);
-SQUIDCEXTERN peer *getAnyParent(HttpRequest * request);
 SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
 SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
 SQUIDCEXTERN void peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup);