/*
- * $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
#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)
{
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
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;
/*
- * $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
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;