]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
prefer_direct option to prefer parents instead of direct
authorwessels <>
Thu, 12 Nov 1998 13:33:31 +0000 (13:33 +0000)
committerwessels <>
Thu, 12 Nov 1998 13:33:31 +0000 (13:33 +0000)
src/cf.data.pre
src/peer_select.cc
src/structs.h

index 5b4daeae269482c5b88aabceb922abcb30304682..35f3b135d0eacfcfb6355fc6323ee8a155a967e0 100644 (file)
@@ -1,6 +1,6 @@
 
 #
-# $Id: cf.data.pre,v 1.124 1998/11/12 06:27:57 wessels Exp $
+# $Id: cf.data.pre,v 1.125 1998/11/12 06:33:31 wessels Exp $
 #
 #
 # SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -2693,4 +2693,19 @@ DOC_START
        additional CRLF pair from broken web clients.
 persistent_client_posts on
 DOC_END
+
+NAME: prefer_direct
+TYPE: onoff
+LOC: Config.onoff.prefer_direct
+DEFAULT: on
+DOC_START
+       By default, if the ICP, HTCP, Cache Digest, etc. techniques
+       do not yield a parent cache, Squid gives higher preference
+       to forwarding the request direct to origin servers, rather
+       than selecting a parent cache anyway.
+
+       If you want Squid to give higher precedence to a parent
+       cache, instead of going direct, then turn this option off.
+prefer_direct on
+DOC_END
 EOF
index 9f67b6b6c780bafd75a95d3e8572ac2e3da5ab46..7f5d694bbf505eecc7a40c08213ad4f1cf8bac70 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: peer_select.cc,v 1.89 1998/11/12 06:28:19 wessels Exp $
+ * $Id: peer_select.cc,v 1.90 1998/11/12 06:33:32 wessels Exp $
  *
  * DEBUG: section 44    Peer Selection Algorithm
  * AUTHOR: Duane Wessels
@@ -384,7 +384,7 @@ peerSelectFoo(ps_state * psstate)
        debug(44, 3) ("peerSelect: %s/%s\n", hier_strings[code], p->host);
        hierarchyNote(&request->hier, code, &psstate->ping, p->host);
        peerSelectCallback(psstate, p);
-    } else if (direct != DIRECT_NO) {
+    } else if (Config.onoff.prefer_direct && direct != DIRECT_NO) {
        code = DIRECT;
        debug(44, 3) ("peerSelect: %s/%s\n", hier_strings[code], request->host);
        hierarchyNote(&request->hier, code, &psstate->ping, request->host);
@@ -393,6 +393,11 @@ peerSelectFoo(ps_state * psstate)
        debug(44, 3) ("peerSelect: %s/%s\n", hier_strings[code], p->host);
        hierarchyNote(&request->hier, code, &psstate->ping, p->host);
        peerSelectCallback(psstate, p);
+    } else if (direct != DIRECT_NO) {
+       code = DIRECT;
+       debug(44, 3) ("peerSelect: %s/%s\n", hier_strings[code], request->host);
+       hierarchyNote(&request->hier, code, &psstate->ping, request->host);
+       peerSelectCallback(psstate, NULL);
     } else {
        code = NO_DIRECT_FAIL;
        hierarchyNote(&request->hier, code, &psstate->ping, NULL);
index 76966b7a9bd3ab7c6b69450ba750fec5925b4262..7bd7538dfb98aaab7e0b079241628942febb2845 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: structs.h,v 1.247 1998/11/12 06:28:29 wessels Exp $
+ * $Id: structs.h,v 1.248 1998/11/12 06:33:33 wessels Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -338,6 +338,7 @@ struct _SquidConfig {
        int offline;
        int redir_rewrites_host;
        int persistent_client_posts;
+       int prefer_direct;
     } onoff;
     acl *aclList;
     struct {