]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Bug 2051: 'default' cache_peer option does not match documentation
authorAmos Jeffries <squid3@treenet.co.nz>
Fri, 22 Jul 2011 14:39:54 +0000 (08:39 -0600)
committerAmos Jeffries <squid3@treenet.co.nz>
Fri, 22 Jul 2011 14:39:54 +0000 (08:39 -0600)
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 and
speed the selection code.

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

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

index d5a699285dbbb6ec28bab8a2340d207ca9725e20..72fc63549235463bb83b6844badcb7194f0335a9 100644 (file)
@@ -477,33 +477,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 13e9b200294dd67586ffbd7c7c01667e4c1267a2..5d9b0bb4a6cf6daf33dfa5242ece7471a630e492 100644 (file)
@@ -540,12 +540,10 @@ peerGetSomeParent(ps_state * ps)
     if (ps->direct == DIRECT_YES)
         return;
 
-    if ((p = getDefaultParent(request))) {
-        code = DEFAULT_PARENT;
+    if ((p = peerSourceHashSelectParent(request))) {
+        code = SOURCEHASH_PARENT;
     } else if ((p = peerUserHashSelectParent(request))) {
         code = USERHASH_PARENT;
-    } else if ((p = peerSourceHashSelectParent(request))) {
-        code = SOURCEHASH_PARENT;
     } else if ((p = carpSelectParent(request))) {
         code = CARP;
     } else if ((p = getRoundRobinParent(request))) {
@@ -554,8 +552,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 5a2e8ecdc887842c3397adff59a41d2ebe00cb69..ab7d4018015ee2e8a6dd81f99ebe9401539eabc9 100644 (file)
@@ -388,7 +388,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);