]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
StoreEntry->refresh was a bad idea. It would require changing
authorwessels <>
Wed, 15 Jul 1998 03:25:51 +0000 (03:25 +0000)
committerwessels <>
Wed, 15 Jul 1998 03:25:51 +0000 (03:25 +0000)
swap.state format and would change the format depending on if
USE_CACHE_DIGESTS were defined.

Now we use default refresh_pattern entries if the StoreEntry doesn't
have a MemObject (and therefore a URL).

src/refresh.cc
src/store.cc
src/store_digest.cc
src/structs.h

index 8a00b52030a0ba5ff450e20d46327fd9a7fd5977..f1cefc3b60763dc4d7438d402bc2caaac006fdbb 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: refresh.cc,v 1.21 1998/07/14 19:56:39 wessels Exp $
+ * $Id: refresh.cc,v 1.22 1998/07/14 21:25:51 wessels Exp $
  *
  * DEBUG: section 22    Refresh Calculation
  * AUTHOR: Harvest Derived
@@ -45,6 +45,9 @@
 #define REFRESH_DEFAULT_PCT    0.20
 #define REFRESH_DEFAULT_MAX    (time_t)259200
 
+static const refresh_t * refreshLimits(const char *);
+static const refresh_t *refreshUncompiledPattern(const char *);
+
 static const refresh_t *
 refreshLimits(const char *url)
 {
@@ -56,6 +59,17 @@ refreshLimits(const char *url)
     return NULL;
 }
 
+static const refresh_t *
+refreshUncompiledPattern(const char *pat)
+{
+    const refresh_t *R;
+    for (R = Config.Refresh; R; R = R->next) {
+       if (0 == strcmp(R->pattern, pat))
+           return R;
+    }
+    return NULL;
+}
+
 /*
  * refreshCheck():
  *     return 1 if its time to revalidate this entry, 0 otherwise
@@ -141,17 +155,21 @@ refreshWhen(const StoreEntry * entry)
     time_t max = REFRESH_DEFAULT_MAX;
     double pct = REFRESH_DEFAULT_PCT;
     const char *pattern = ".";
-    assert(entry->mem_obj);
-    assert(entry->mem_obj->url);
-    debug(22, 3) ("refreshWhen: key '%s'\n", storeKeyText(entry->key));
-    debug(22, 3) ("refreshWhen: url '%s'\n", entry->mem_obj->url);
-    if (EBIT_TEST(entry->flag, ENTRY_REVALIDATE)) {
-       debug(22, 3) ("refreshWhen: NOW: Required Authorization\n");
-       return refresh_time;
+    if (entry->mem_obj) {
+       assert(entry->mem_obj->url);
+       debug(22, 3) ("refreshWhen: key '%s'\n", storeKeyText(entry->key));
+       debug(22, 3) ("refreshWhen: url '%s'\n", entry->mem_obj->url);
+       if (EBIT_TEST(entry->flag, ENTRY_REVALIDATE)) {
+           debug(22, 3) ("refreshWhen: NOW: Required Authorization\n");
+           return refresh_time;
+       }
+       debug(22, 3) ("refreshWhen: entry: exp: %d, tstamp: %d, lmt: %d\n",
+           entry->expires, entry->timestamp, entry->lastmod);
+       R = refreshLimits(entry->mem_obj->url);
+    } else {
+       R = refreshUncompiledPattern(".");
     }
-    debug(22, 3) ("refreshWhen: entry: exp: %d, tstamp: %d, lmt: %d\n",
-       entry->expires, entry->timestamp, entry->lastmod);
-    if ((R = refreshLimits(entry->mem_obj->url))) {
+    if (R != NULL) {
        min = R->min;
        max = R->max;
        pct = R->pct;
index 2115b4019581c2fecb3fd53b79cc05e6ccb66497..e5a575cc01eac3b8796dfb58aaaf45f612dbd5b0 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store.cc,v 1.426 1998/07/14 20:54:54 wessels Exp $
+ * $Id: store.cc,v 1.427 1998/07/14 21:25:53 wessels Exp $
  *
  * DEBUG: section 20    Storage Manager
  * AUTHOR: Harvest Derived
@@ -988,9 +988,6 @@ storeTimestampsSet(StoreEntry * entry)
     if (entry->lastmod < 0)
        entry->lastmod = served_date;
     entry->timestamp = served_date;
-#if USE_CACHE_DIGESTS
-    entry->refresh = refreshWhen(entry);
-#endif
 }
 
 void
index e50b3a453c7ca263b239275ac3c1e2c2fffa28be..37e792308f8ee871e7d0a0a08d54207515cfbf42 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: store_digest.cc,v 1.21 1998/07/14 20:54:56 wessels Exp $
+ * $Id: store_digest.cc,v 1.22 1998/07/14 21:25:54 wessels Exp $
  *
  * DEBUG: section 71    Store Digest Manager
  * AUTHOR: Alex Rousskov
@@ -185,11 +185,12 @@ storeDigestAdd(const StoreEntry * entry)
        storeKeyText(entry->key));
     /* only public entries are digested */
     if (!EBIT_TEST(entry->flag, KEY_PRIVATE)) {
+       const time_t refresh = refreshWhen(entry);
        debug(71, 6) ("storeDigestAdd: entry expires in %d secs\n",
-           (int) (entry->refresh - squid_curtime));
+           (int) (refresh - squid_curtime));
        /* if expires too soon, ignore */
        /* Note: We should use the time of the next rebuild, not cur_time @?@ */
-       if (entry->refresh <= squid_curtime + StoreDigestRebuildPeriod) {
+       if (refresh <= squid_curtime + StoreDigestRebuildPeriod) {
            debug(71, 6) ("storeDigestAdd: entry expires too early, ignoring\n");
        } else {
            good_entry = 1;
index c9461c47cb7d5d37c891a5140195717bc22d515a..3cea6a859c25cc4fb0c1c8cb9fbe5eb56433b243 100644 (file)
@@ -1093,9 +1093,6 @@ struct _StoreEntry {
     time_t lastref;
     time_t expires;
     time_t lastmod;
-#if USE_CACHE_DIGESTS
-    time_t refresh;
-#endif
     size_t swap_file_sz;
     u_short refcount;
     u_short flag;