From: wessels <> Date: Tue, 2 Jan 2001 06:09:59 +0000 (+0000) Subject: 'miniumum_direct_rtt' feature from Georgy Salnikov X-Git-Tag: SQUID_3_0_PRE1~1714 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5f84d830ec251227b6ff0a0a68cec27f0115c1b4;p=thirdparty%2Fsquid.git 'miniumum_direct_rtt' feature from Georgy Salnikov --- diff --git a/src/cf.data.pre b/src/cf.data.pre index 94c239dc39..249292f12a 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -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 diff --git a/src/peer_select.cc b/src/peer_select.cc index f2cdcfe86d..d9719b8af0 100644 --- a/src/peer_select.cc +++ b/src/peer_select.cc @@ -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; } diff --git a/src/structs.h b/src/structs.h index 38ff928d62..c8dbbe10af 100644 --- a/src/structs.h +++ b/src/structs.h @@ -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;