From: wessels <> Date: Tue, 13 Oct 1998 03:40:57 +0000 (+0000) Subject: getAnyParent -- last resort for when all parents down X-Git-Tag: SQUID_3_0_PRE1~2592 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6a655df07562b4af93415409e20d8006010ca1e5;p=thirdparty%2Fsquid.git getAnyParent -- last resort for when all parents down --- diff --git a/src/enums.h b/src/enums.h index 5b9bb44eae..fcbe91c7c1 100644 --- a/src/enums.h +++ b/src/enums.h @@ -1,6 +1,6 @@ /* - * $Id: enums.h,v 1.134 1998/09/30 02:53:19 wessels Exp $ + * $Id: enums.h,v 1.135 1998/10/12 21:40:57 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -295,6 +295,7 @@ typedef enum { #if USE_CARP CARP, #endif + ANY_OLD_PARENT, HIER_MAX } hier_code; diff --git a/src/neighbors.cc b/src/neighbors.cc index bcddd0130a..75608c1577 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -1,6 +1,6 @@ /* - * $Id: neighbors.cc,v 1.257 1998/10/08 02:40:07 wessels Exp $ + * $Id: neighbors.cc,v 1.258 1998/10/12 21:40:59 wessels Exp $ * * DEBUG: section 15 Neighbor Routines * AUTHOR: Harvest Derived @@ -274,6 +274,22 @@ getDefaultParent(request_t * request) return NULL; } +peer * +getAnyParent(request_t * request) +{ + peer *p = NULL; + for (p = Config.peers; p; p = p->next) { + if (neighborType(p, request) != PEER_PARENT) + continue; + if (!peerHTTPOkay(p, request)) + continue; + debug(15, 3) ("getAnyParent: returning %s\n", p->host); + return p; + } + debug(15, 3) ("getAnyParent: returning NULL\n"); + return NULL; +} + peer * getNextPeer(peer * p) { diff --git a/src/peer_select.cc b/src/peer_select.cc index ddb473fcd4..529d271182 100644 --- a/src/peer_select.cc +++ b/src/peer_select.cc @@ -1,6 +1,6 @@ /* - * $Id: peer_select.cc,v 1.86 1998/10/11 23:19:48 wessels Exp $ + * $Id: peer_select.cc,v 1.87 1998/10/12 21:41:00 wessels Exp $ * * DEBUG: section 44 Peer Selection Algorithm * AUTHOR: Duane Wessels @@ -59,6 +59,7 @@ const char *hier_strings[] = #if USE_CARP "CARP", #endif + "ANY_PARENT", "INVALID CODE" }; @@ -142,6 +143,10 @@ peerGetSomeParent(request_t * request, hier_code * code) *code = FIRSTUP_PARENT; return p; } + if ((p = getAnyParent(request))) { + *code = ANY_OLD_PARENT; + return p; + } return NULL; } diff --git a/src/protos.h b/src/protos.h index a98226cb79..d4aadad899 100644 --- a/src/protos.h +++ b/src/protos.h @@ -1,6 +1,6 @@ /* - * $Id: protos.h,v 1.276 1998/10/10 14:57:42 wessels Exp $ + * $Id: protos.h,v 1.277 1998/10/12 21:41:01 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -578,6 +578,7 @@ extern void neighbors_open(int); extern peer *peerFindByName(const char *); extern peer *getDefaultParent(request_t * request); extern peer *getRoundRobinParent(request_t * request); +extern peer *getAnyParent(request_t * request); extern lookup_t peerDigestLookup(peer * p, request_t * request, StoreEntry * entry); extern peer *neighborsDigestSelect(request_t * request, StoreEntry * entry); extern void peerNoteDigestLookup(request_t * request, peer * p, lookup_t lookup);