[jira] [Commented] (TS-2342) problem with cache.cache_responses_to_cookies value 0
[ https://issues.apache.org/jira/browse/TS-2342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14000395#comment-14000395 ] ASF subversion and git services commented on TS-2342: - Commit 5f5ae1b5f1f4b51ead2bc966adfd636d3a97d0cb in trafficserver's branch refs/heads/master from [~pmarquess] [ https://git-wip-us.apache.org/repos/asf?p=trafficserver.git;h=5f5ae1b ] TS-2342 Problem with cache.cache_responses_to_cookies value 0. Nice catch Paul! > problem with cache.cache_responses_to_cookies value 0 > - > > Key: TS-2342 > URL: https://issues.apache.org/jira/browse/TS-2342 > Project: Traffic Server > Issue Type: Bug > Components: Cache, Configuration >Reporter: Paul Marquess >Assignee: Leif Hedstrom > Labels: A > Fix For: 5.0.0 > > Attachments: TS-2342.patch > > > I’m attempting to configure TS (3.2.0 but the issue seems to be present in > 4.0.2 as well) to disable caching for all content where a cookie is present. > Setting cache.cache_responses_to_cookies to 0 looks like it should do that > according to the comment in records.config ># cache responses to cookies has 5 options: ># 0 - do not cache any responses to cookies ># 1 - cache for any content-type ># 2 - cache only for image types ># 3 - cache for all but text content-types ># 4 - cache for all but text content-types except OS response ># without "Set-Cookie" or with "Cache-Control: public" ># See also cache-responses-to-cookies in cache.config. > CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1 > Unfortunately when I set cache.cache_responses_to_cookies to 0 in > records.config I don’t see anything written to the cache at all. > Am I correct in assuming that cache.cache_responses_to_cookies is intended to > influence the caching of content only when a cookie is in play? So the > behaviour I’m seeing is wrong? > Looking in do_cookiesprevent_caching in HttpTransact.cc it looks like the > test for the 0 use case (COOKIES_CACHE_NONE) is done too early. Below is the > code > // Can cache all regardless of cookie header - just ignore all cookie > headers > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_ALL) { > return false; > } > // Do not cache if cookies option is COOKIES_CACHE_NONE > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_NONE) { > return true; > } > ... > if (!response->presence(MIME_PRESENCE_SET_COOKIE) && > !request->presence(MIME_PRESENCE_COOKIE) && (cached_request == NULL >|| > !cached_request->presence(MIME_PRESENCE_COOKIE))) { > return false; > } > I don’t see any other tests in the code that check for cookies that would be > triggered before do_cookiesprevent_caching is invoked, so surely the > COOKIES_CACHE_NONE test needs to be done after the presence of cookies > headers has been determined? > So the code would become > // Can cache all regardless of cookie header - just ignore all cookie > headers > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_ALL) { > return false; > } > ... > if (!response->presence(MIME_PRESENCE_SET_COOKIE) && > !request->presence(MIME_PRESENCE_COOKIE) && (cached_request == NULL >|| > !cached_request->presence(MIME_PRESENCE_COOKIE))) { > return false; > } > // Know we have a cookie present at this point > // Do not cache if cookies option is COOKIES_CACHE_NONE > // and cookie detected > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_NONE) { > return true; > } -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (TS-2342) problem with cache.cache_responses_to_cookies value 0
[ https://issues.apache.org/jira/browse/TS-2342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13998574#comment-13998574 ] Paul Marquess commented on TS-2342: --- Will do. > problem with cache.cache_responses_to_cookies value 0 > - > > Key: TS-2342 > URL: https://issues.apache.org/jira/browse/TS-2342 > Project: Traffic Server > Issue Type: Bug > Components: Cache, Configuration >Reporter: Paul Marquess >Assignee: Leif Hedstrom > Labels: A > Fix For: 5.0.0 > > > I’m attempting to configure TS (3.2.0 but the issue seems to be present in > 4.0.2 as well) to disable caching for all content where a cookie is present. > Setting cache.cache_responses_to_cookies to 0 looks like it should do that > according to the comment in records.config ># cache responses to cookies has 5 options: ># 0 - do not cache any responses to cookies ># 1 - cache for any content-type ># 2 - cache only for image types ># 3 - cache for all but text content-types ># 4 - cache for all but text content-types except OS response ># without "Set-Cookie" or with "Cache-Control: public" ># See also cache-responses-to-cookies in cache.config. > CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1 > Unfortunately when I set cache.cache_responses_to_cookies to 0 in > records.config I don’t see anything written to the cache at all. > Am I correct in assuming that cache.cache_responses_to_cookies is intended to > influence the caching of content only when a cookie is in play? So the > behaviour I’m seeing is wrong? > Looking in do_cookiesprevent_caching in HttpTransact.cc it looks like the > test for the 0 use case (COOKIES_CACHE_NONE) is done too early. Below is the > code > // Can cache all regardless of cookie header - just ignore all cookie > headers > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_ALL) { > return false; > } > // Do not cache if cookies option is COOKIES_CACHE_NONE > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_NONE) { > return true; > } > ... > if (!response->presence(MIME_PRESENCE_SET_COOKIE) && > !request->presence(MIME_PRESENCE_COOKIE) && (cached_request == NULL >|| > !cached_request->presence(MIME_PRESENCE_COOKIE))) { > return false; > } > I don’t see any other tests in the code that check for cookies that would be > triggered before do_cookiesprevent_caching is invoked, so surely the > COOKIES_CACHE_NONE test needs to be done after the presence of cookies > headers has been determined? > So the code would become > // Can cache all regardless of cookie header - just ignore all cookie > headers > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_ALL) { > return false; > } > ... > if (!response->presence(MIME_PRESENCE_SET_COOKIE) && > !request->presence(MIME_PRESENCE_COOKIE) && (cached_request == NULL >|| > !cached_request->presence(MIME_PRESENCE_COOKIE))) { > return false; > } > // Know we have a cookie present at this point > // Do not cache if cookies option is COOKIES_CACHE_NONE > // and cookie detected > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_NONE) { > return true; > } -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (TS-2342) problem with cache.cache_responses_to_cookies value 0
[ https://issues.apache.org/jira/browse/TS-2342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13997990#comment-13997990 ] Leif Hedstrom commented on TS-2342: --- Paul, I totally dropped the ball on this... Sorry about that. Can you maybe attach a proposed patch for these fixes? Against current master branch :). Thanks! > problem with cache.cache_responses_to_cookies value 0 > - > > Key: TS-2342 > URL: https://issues.apache.org/jira/browse/TS-2342 > Project: Traffic Server > Issue Type: Bug > Components: Cache, Configuration >Reporter: Paul Marquess >Assignee: Leif Hedstrom > Fix For: 5.0.0 > > > I’m attempting to configure TS (3.2.0 but the issue seems to be present in > 4.0.2 as well) to disable caching for all content where a cookie is present. > Setting cache.cache_responses_to_cookies to 0 looks like it should do that > according to the comment in records.config ># cache responses to cookies has 5 options: ># 0 - do not cache any responses to cookies ># 1 - cache for any content-type ># 2 - cache only for image types ># 3 - cache for all but text content-types ># 4 - cache for all but text content-types except OS response ># without "Set-Cookie" or with "Cache-Control: public" ># See also cache-responses-to-cookies in cache.config. > CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1 > Unfortunately when I set cache.cache_responses_to_cookies to 0 in > records.config I don’t see anything written to the cache at all. > Am I correct in assuming that cache.cache_responses_to_cookies is intended to > influence the caching of content only when a cookie is in play? So the > behaviour I’m seeing is wrong? > Looking in do_cookiesprevent_caching in HttpTransact.cc it looks like the > test for the 0 use case (COOKIES_CACHE_NONE) is done too early. Below is the > code > // Can cache all regardless of cookie header - just ignore all cookie > headers > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_ALL) { > return false; > } > // Do not cache if cookies option is COOKIES_CACHE_NONE > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_NONE) { > return true; > } > ... > if (!response->presence(MIME_PRESENCE_SET_COOKIE) && > !request->presence(MIME_PRESENCE_COOKIE) && (cached_request == NULL >|| > !cached_request->presence(MIME_PRESENCE_COOKIE))) { > return false; > } > I don’t see any other tests in the code that check for cookies that would be > triggered before do_cookiesprevent_caching is invoked, so surely the > COOKIES_CACHE_NONE test needs to be done after the presence of cookies > headers has been determined? > So the code would become > // Can cache all regardless of cookie header - just ignore all cookie > headers > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_ALL) { > return false; > } > ... > if (!response->presence(MIME_PRESENCE_SET_COOKIE) && > !request->presence(MIME_PRESENCE_COOKIE) && (cached_request == NULL >|| > !cached_request->presence(MIME_PRESENCE_COOKIE))) { > return false; > } > // Know we have a cookie present at this point > // Do not cache if cookies option is COOKIES_CACHE_NONE > // and cookie detected > if ((CookiesConfig) cookies_conf == COOKIES_CACHE_NONE) { > return true; > } -- This message was sent by Atlassian JIRA (v6.2#6252)