You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2011/03/09 22:43:59 UTC
svn commit: r1080015 - in /trafficserver/traffic/trunk/proxy:
CacheControl.cc CacheControl.h http/HttpTransact.cc
Author: amc
Date: Wed Mar 9 21:43:58 2011
New Revision: 1080015
URL: http://svn.apache.org/viewvc?rev=1080015&view=rev
Log:
TS-700
Modified:
trafficserver/traffic/trunk/proxy/CacheControl.cc
trafficserver/traffic/trunk/proxy/CacheControl.h
trafficserver/traffic/trunk/proxy/http/HttpTransact.cc
Modified: trafficserver/traffic/trunk/proxy/CacheControl.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/CacheControl.cc?rev=1080015&r1=1080014&r2=1080015&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/CacheControl.cc (original)
+++ trafficserver/traffic/trunk/proxy/CacheControl.cc Wed Mar 9 21:43:58 2011
@@ -53,6 +53,8 @@
#ifndef INK_NO_ACL
static const char modulePrefix[] = "[CacheControl]";
+# define TWEAK_CACHE_RESPONSES_TO_COOKIES "cache-responses-to-cookies"
+
static const char *CC_directive_str[CC_NUM_TYPES] = {
"INVALID",
"REVALIDATE_AFTER",
@@ -241,6 +243,10 @@ CacheControlRecord::Print()
printf("\t\tDirective: INVALID\n");
break;
}
+ if (cache_responses_to_cookies >= 0)
+ printf("\t\t - " TWEAK_CACHE_RESPONSES_TO_COOKIES ":%d\n",
+ cache_responses_to_cookies
+ );
ControlBase::Print();
}
@@ -266,6 +272,37 @@ CacheControlRecord::Init(matcher_line *
this->line_num = line_info->line_num;
+ // First pass for optional tweaks.
+ for (int i = 0; i < MATCHER_MAX_TOKENS && line_info->num_el ; ++i) {
+ bool used = false;
+ label = line_info->line[0][i];
+ val = line_info->line[1][i];
+ if (!label) continue;
+
+ if (strcasecmp(label, TWEAK_CACHE_RESPONSES_TO_COOKIES) == 0) {
+ char* ptr = 0;
+ int v = strtol(val, &ptr, 0);
+ if (!ptr || v < 0 || v > 4) {
+ errBuf = static_cast<char*>(xmalloc(errBufLen * sizeof(char)));
+ snprintf(errBuf, errBufLen,
+ "Value for " TWEAK_CACHE_RESPONSES_TO_COOKIES
+ " must be an integer in the range 0..4"
+ );
+ return errBuf;
+ } else {
+ cache_responses_to_cookies = v;
+ }
+ used = true;
+ }
+
+ // Clip pair if used.
+ if (used) {
+ line_info->line[0][i] = 0;
+ --(line_info->num_el);
+ }
+ }
+
+ // Now look for the directive.
for (int i = 0; i < MATCHER_MAX_TOKENS; i++) {
label = line_info->line[0][i];
val = line_info->line[1][i];
@@ -438,8 +475,21 @@ CacheControlRecord::UpdateMatch(CacheCon
break;
}
+ if (cache_responses_to_cookies >= 0)
+ result->cache_responses_to_cookies = cache_responses_to_cookies;
+
if (match == true) {
- Debug("cache_control", "Matched with for %s at line %d", CC_directive_str[this->directive], this->line_num);
+ char crtc_debug[80];
+ if (result->cache_responses_to_cookies >= 0)
+ sprintf(crtc_debug, " [" TWEAK_CACHE_RESPONSES_TO_COOKIES "=%d]",
+ result->cache_responses_to_cookies
+ );
+ else
+ crtc_debug[0] = 0;
+
+ Debug("cache_control", "Matched with for %s at line %d%s",
+ CC_directive_str[this->directive], this->line_num, crtc_debug
+ );
}
}
#else
Modified: trafficserver/traffic/trunk/proxy/CacheControl.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/CacheControl.h?rev=1080015&r1=1080014&r2=1080015&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/CacheControl.h (original)
+++ trafficserver/traffic/trunk/proxy/CacheControl.h Wed Mar 9 21:43:58 2011
@@ -81,6 +81,7 @@ public:
bool ignore_client_no_cache;
bool ignore_server_no_cache;
bool ignore_client_cc_max_age;
+ int cache_responses_to_cookies; ///< Override for caching cookied responses.
// bool cache_auth_content;
// Data for internal use only
@@ -109,6 +110,7 @@ CacheControlResult::CacheControlResult()
ignore_client_no_cache(false),
ignore_server_no_cache(false),
ignore_client_cc_max_age(true),
+ cache_responses_to_cookies(-1), // do not change value
//cache_auth_content(false),
reval_line(-1),
never_line(-1),
@@ -125,6 +127,7 @@ public:
CacheControlRecord();
CacheControlType directive;
int time_arg;
+ int cache_responses_to_cookies;
char *Init(matcher_line * line_info);
inkcoreapi void UpdateMatch(CacheControlResult * result, RD * rdata);
void Print();
@@ -133,6 +136,7 @@ public:
inline
CacheControlRecord::CacheControlRecord()
: ControlBase(), directive(CC_INVALID), time_arg(0)
+ , cache_responses_to_cookies(-1)
{}
//
Modified: trafficserver/traffic/trunk/proxy/http/HttpTransact.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/proxy/http/HttpTransact.cc?rev=1080015&r1=1080014&r2=1080015&view=diff
==============================================================================
--- trafficserver/traffic/trunk/proxy/http/HttpTransact.cc (original)
+++ trafficserver/traffic/trunk/proxy/http/HttpTransact.cc Wed Mar 9 21:43:58 2011
@@ -190,6 +190,10 @@ update_cache_control_information_from_co
s->cache_info.directives.does_client_permit_lookup = false;
s->cache_info.directives.does_client_permit_storing = false;
}
+
+ // Less than 0 means it wasn't overridden, so leave it alone.
+ if (s->cache_control.cache_responses_to_cookies >= 0)
+ s->txn_conf->cache_responses_to_cookies = s->cache_control.cache_responses_to_cookies;
}
inline bool