]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
'miniumum_direct_rtt' feature from Georgy Salnikov <sge@nmr.nioch.nsc.ru>
authorwessels <>
Tue, 2 Jan 2001 06:09:59 +0000 (06:09 +0000)
committerwessels <>
Tue, 2 Jan 2001 06:09:59 +0000 (06:09 +0000)
src/cf.data.pre
src/peer_select.cc
src/structs.h

index 94c239dc39747c392a99627310b1153a19509592..249292f12ab4b8c08998264d3b6a7ddd65839773 100644 (file)
@@ -1,6 +1,6 @@
 
 #
-# $Id: cf.data.pre,v 1.202 2000/12/30 23:29:06 wessels Exp $
+# $Id: cf.data.pre,v 1.203 2001/01/01 23:09:59 wessels Exp $
 #
 #
 # SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -2269,6 +2269,14 @@ DOC_START
        which are no more than this many hops away.
 DOC_END
 
+NAME: minimum_direct_rtt
+TYPE: int
+DEFAULT: 400
+LOC: Config.minDirectRtt
+DOC_START
+       If using the ICMP pinging stuff, do direct fetches for sites
+       which are no more than this many rtt milliseconds away.
+DOC_END
 
 NAME: cachemgr_passwd
 TYPE: cachemgrpasswd
index f2cdcfe86d9ccc52396ac8891a54e0257d01f191..d9719b8af0bbd6f18b93adef89c575a6f0ae33b2 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: peer_select.cc,v 1.109 2000/10/17 08:06:04 adrian Exp $
+ * $Id: peer_select.cc,v 1.110 2001/01/01 23:09:59 wessels Exp $
  *
  * DEBUG: section 44    Peer Selection Algorithm
  * AUTHOR: Duane Wessels
@@ -205,18 +205,16 @@ peerSelectCallback(ps_state * psstate)
 static int
 peerCheckNetdbDirect(ps_state * psstate)
 {
-    peer *p = whichPeer(&psstate->closest_parent_miss);
+    peer *p;
     int myrtt;
     int myhops;
-    if (p == NULL)
-       return 0;
     if (psstate->direct == DIRECT_NO)
        return 0;
     myrtt = netdbHostRtt(psstate->request->host);
     debug(44, 3) ("peerCheckNetdbDirect: MY RTT = %d msec\n", myrtt);
-    debug(44, 3) ("peerCheckNetdbDirect: closest_parent_miss RTT = %d msec\n",
-       psstate->ping.p_rtt);
-    if (myrtt && myrtt < psstate->ping.p_rtt)
+    debug(44, 3) ("peerCheckNetdbDirect: minimum_direct_rtt = %d msec\n",
+       Config.minDirectRtt);
+    if (myrtt && myrtt <= Config.minDirectRtt)
        return 1;
     myhops = netdbHostHops(psstate->request->host);
     debug(44, 3) ("peerCheckNetdbDirect: MY hops = %d\n", myhops);
@@ -224,6 +222,13 @@ peerCheckNetdbDirect(ps_state * psstate)
        Config.minDirectHops);
     if (myhops && myhops <= Config.minDirectHops)
        return 1;
+    p = whichPeer(&psstate->closest_parent_miss);
+    if (p == NULL)
+       return 0;
+    debug(44, 3) ("peerCheckNetdbDirect: closest_parent_miss RTT = %d msec\n",
+       psstate->ping.p_rtt);
+    if (myrtt && myrtt <= psstate->ping.p_rtt)
+       return 1;
     return 0;
 }
 
@@ -260,6 +265,8 @@ peerSelectFoo(ps_state * ps)
            ps->direct = DIRECT_NO;
        } else if (request->flags.loopdetect) {
            ps->direct = DIRECT_YES;
+       } else if (peerCheckNetdbDirect(ps)) {
+           ps->direct = DIRECT_YES;
        } else {
            ps->direct = DIRECT_MAYBE;
        }
index 38ff928d6270392b16d0d170d154033cc03b8b8c..c8dbbe10af0d95858f0db87adbfa63147984ae76 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: structs.h,v 1.368 2000/12/30 23:29:07 wessels Exp $
+ * $Id: structs.h,v 1.369 2001/01/01 23:09:59 wessels Exp $
  *
  *
  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
@@ -380,6 +380,7 @@ struct _SquidConfig {
        int size;
     } fqdncache;
     int minDirectHops;
+    int minDirectRtt;
     cachemgr_passwd *passwd_list;
     struct {
        int objectsPerBucket;