]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Internal HTTP requests bypass miss_access rules. Internal requests
authorwessels <>
Wed, 2 Sep 1998 05:31:22 +0000 (05:31 +0000)
committerwessels <>
Wed, 2 Sep 1998 05:31:22 +0000 (05:31 +0000)
are passed to fwdStart() with client_address == no_addr.

src/asn.cc
src/forward.cc
src/net_db.cc
src/peer_digest.cc
src/urn.cc

index 2cf54e3cc32508eb206b8d2e34edcf56d3a6c6fb..2e8dd47f48028a2a941dbbab2bda6b5f04fee2c0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: asn.cc,v 1.46 1998/08/21 03:25:28 wessels Exp $
+ * $Id: asn.cc,v 1.47 1998/09/01 23:31:22 wessels Exp $
  *
  * DEBUG: section 53    AS Number handling
  * AUTHOR: Duane Wessels, Kostas Anagnostakis
@@ -183,7 +183,7 @@ asnCacheStart(int as)
     if ((e = storeGet(k)) == NULL) {
        e = storeCreateEntry(asres, asres, null_request_flags, METHOD_GET);
        storeClientListAdd(e, asState);
-       fwdStart(-1, e, asState->request, any_addr);
+       fwdStart(-1, e, asState->request, no_addr);
     } else {
        storeLockObject(e);
        storeClientListAdd(e, asState);
index 172c6a111b95114e8abc06d58d6de2d331bdd853..6d4f74399e2912763cdeab49a616cce750397177 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: forward.cc,v 1.25 1998/08/19 06:05:52 wessels Exp $
+ * $Id: forward.cc,v 1.26 1998/09/01 23:31:23 wessels Exp $
  *
  * DEBUG: section 17    Request Forwarding
  * AUTHOR: Duane Wessels
@@ -318,19 +318,26 @@ fwdStart(int fd, StoreEntry * e, request_t * r, struct in_addr peer_addr)
     aclCheck_t ch;
     int answer;
     ErrorState *err;
-    /*      
-     * Check if this host is allowed to fetch MISSES from us (miss_access)
+    /*
+     * peer_addr == no_addr indicates this is an "internal" request
+     * from peer_digest.c, asn.c, netdb.c, etc and should always
+     * be allowed.  yuck, I know.
      */
-    memset(&ch, '\0', sizeof(aclCheck_t));
-    ch.src_addr = peer_addr;
-    ch.request = r;
-    answer = aclCheckFast(Config.accessList.miss, &ch);
-    if (answer == 0) {
-       err = errorCon(ERR_FORWARDING_DENIED, HTTP_FORBIDDEN);
-       err->request = requestLink(r);
-       err->src_addr = peer_addr;
-       errorAppendEntry(e, err);
-       return;
+    if (peer_addr.s_addr != no_addr.s_addr) {
+       /*      
+        * Check if this host is allowed to fetch MISSES from us (miss_access)
+        */
+       memset(&ch, '\0', sizeof(aclCheck_t));
+       ch.src_addr = peer_addr;
+       ch.request = r;
+       answer = aclCheckFast(Config.accessList.miss, &ch);
+       if (answer == 0) {
+           err = errorCon(ERR_FORWARDING_DENIED, HTTP_FORBIDDEN);
+           err->request = requestLink(r);
+           err->src_addr = peer_addr;
+           errorAppendEntry(e, err);
+           return;
+       }
     }
     debug(17, 3) ("fwdStart: '%s'\n", storeUrl(e));
     e->mem_obj->request = requestLink(r);
index afe4c7be62db98a177c860859e1da3e986e6b6f2..65cb05f72f7fbd8b3d0a135ca14e382b4f405956 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: net_db.cc,v 1.125 1998/08/25 19:09:20 wessels Exp $
+ * $Id: net_db.cc,v 1.126 1998/09/01 23:31:24 wessels Exp $
  *
  * DEBUG: section 38    Network Measurement Database
  * AUTHOR: Duane Wessels
@@ -1078,7 +1078,7 @@ netdbExchangeStart(void *data)
     storeClientCopy(ex->e, ex->seen, ex->used, ex->buf_sz,
        ex->buf, netdbExchangeHandleReply, ex);
     ex->r->flags.loopdetect = 1;       /* cheat! -- force direct */
-    fwdStart(-1, ex->e, ex->r, any_addr);
+    fwdStart(-1, ex->e, ex->r, no_addr);
 #endif
 }
 
index 2656f989940581dd04381f9ef5896ed46c966e41..9271a476be103cbcf8e456f057a5d96b56d523d6 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: peer_digest.cc,v 1.45 1998/08/21 03:15:20 wessels Exp $
+ * $Id: peer_digest.cc,v 1.46 1998/09/01 23:31:25 wessels Exp $
  *
  * DEBUG: section 72    Peer Digest Routines
  * AUTHOR: Alex Rousskov
@@ -282,7 +282,7 @@ peerDigestRequest(peer * p)
     fetch->offset = 0;
     debug(72, 3) ("peerDigestRequest: forwarding to fwdStart...\n");
     /* push towards peer cache */
-    fwdStart(-1, e, req, any_addr);
+    fwdStart(-1, e, req, no_addr);
     storeClientCopy(e, 0, 0, SM_PAGE_SIZE, memAllocate(MEM_4K_BUF),
        peerDigestFetchReply, fetch);
 }
index 597f88abe0649e2c2a4b103a55c9ff8252473f41..e6467fd371c5a461aadf060b5d6a13c74228be38 100644 (file)
@@ -1,7 +1,7 @@
 
 /*
  *
- * $Id: urn.cc,v 1.43 1998/08/21 03:15:29 wessels Exp $
+ * $Id: urn.cc,v 1.44 1998/09/01 23:31:25 wessels Exp $
  *
  * DEBUG: section 52    URN Parsing
  * AUTHOR: Kostas Anagnostakis
@@ -142,7 +142,7 @@ urnStart(request_t * r, StoreEntry * e)
     if ((urlres_e = storeGet(k)) == NULL) {
        urlres_e = storeCreateEntry(urlres, urlres, null_request_flags, METHOD_GET);
        storeClientListAdd(urlres_e, urnState);
-       fwdStart(-1, urlres_e, urlres_r, any_addr);
+       fwdStart(-1, urlres_e, urlres_r, no_addr);
     } else {
        storeLockObject(urlres_e);
        storeClientListAdd(urlres_e, urnState);