[ 
https://issues.apache.org/jira/browse/TS-2008?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leif Hedstrom updated TS-2008:
------------------------------

    Description: 
if you want to control on ver many suffix in cache.config: jpeg js ... you need 
to specify:
dest_domain=www.test.com suffix=jpeg ttl-in-cache=1m
dest_domain=www.test.com suffix=js ttl-in-cache=1m
...

and we can change to :
dest_domain=www.test.com suffix=jpeg,js,css,html ttl-in-cache=1m

  was:
if you want to control on ver many suffix in cache.config: jpeg js ... you need 
to specify:
dest_domain=www.test.com suffix=jpeg ttl-in-cache=1m
dest_domain=www.test.com suffix=js ttl-in-cache=1m
...

and we can change to :
dest_domain=www.test.com suffix=jpeg,js,css,html ttl-in-cache=1m


by this patch:
{code}
diff -Nur ts-3.3.1/proxy/ControlMatcher.cc ts-3.3.1-new/proxy/ControlMatcher.cc
--- ts-3.3.1/proxy/ControlMatcher.cc    2013-03-10 03:44:28.000000000 +0800
+++ ts-3.3.1-new/proxy/ControlMatcher.cc        2013-07-08 22:42:31.568980245 
+0800
@@ -44,7 +44,7 @@
 #include "P_Cache.h"
 #include "P_SplitDNS.h"
 #include "congest/Congestion.h"
-
+#include <string>
 /****************************************************************
  *   Place all template instantiations at the bottom of the file
  ****************************************************************/
@@ -815,6 +815,63 @@
   if (file_buf == NULL) {
     return 1;
   }
+  /* add by reggie */
+  if(strcmp("[CacheControl]",matcher_name) == 0){
+       Debug("reggie-suffix","file_string is begin" );
+       char *strbuffern = NULL;
+       char *strfile_buf = file_buf, *tmpvalue = NULL;
+       char *cp_line[64];
+       int in = 0;
+       char buffer1[128] = {0};
+       char *outer_ptr=NULL;
+       std::string file_string;
+       while((strbuffern = strtok_r(strfile_buf,"\n",&outer_ptr)) != NULL){
+               Debug("reggie-suffix","strbuffern  is %s",strbuffern);
+               if(*strbuffern == '#'){
+                       Debug("reggie-suffix","# is %s ",strbuffern);
+                       strfile_buf = NULL; 
+                       continue;
+               }
+               if((strchr(strbuffern,',')) != NULL){
+                       in = 0;
+                       while((cp_line[in]=strtok(strbuffern," "))!=NULL) {
+                               strbuffern = NULL;
+                               in++;
+                       }
+                       if((strchr(cp_line[1],'=') != NULL) && 
(strstr(cp_line[1],"suffix"))){
+                               if((cp_line[in] = strtok(cp_line[1],"=")) != 
NULL)
+                                       tmpvalue = strtok(NULL,"=");
+                               while((cp_line[in] = strtok(tmpvalue,",")) != 
NULL){
+                                       in++;
+                                       tmpvalue = NULL;
+                               } 
+                       }
+                       for(int nk = 3; nk < in ;nk++){
+                               //nbuf_len = strlen(cp_line[0]) + 
strlen(cp_line[2]) +strlen(cp_line[nk]) + 9;
+                               //snprintf(buffer1,nbuf_len,"%s suffix=%s 
%s\n",cp_line[0],cp_line[nk],cp_line[2]);
+                               sprintf(buffer1,"%s suffix=%s 
%s\n",cp_line[0],cp_line[nk],cp_line[2]);
+                               file_string.append(buffer1);
+                       }
+               }
+               else{
+                       file_string.append(strbuffern);
+                       file_string += "\n";
+               }
+               strfile_buf = NULL;
+       }
+      //file_string.erase(file_string.end()-1);
+       Debug("reggie_suffix","file_string is %s ",file_string.c_str());
+       ats_free(file_buf);
+       file_buf = (char*) ats_malloc(file_string.size()+1);
+       if(strcpy(file_buf,file_string.c_str()) == NULL){
+               ats_free(file_buf);
+               return 2;
+       }
+       ret = BuildTableFromString(file_buf);
+       ats_free(file_buf);
+       return ret;
+  }
+         /*end by reggie */
 
   ret = BuildTableFromString(file_buf);
   ats_free(file_buf);
{code}


I removed the code from the description, sorry for the confusion re: 
std::string.
                
> Cache control with multiple suffixes
> ------------------------------------
>
>                 Key: TS-2008
>                 URL: https://issues.apache.org/jira/browse/TS-2008
>             Project: Traffic Server
>          Issue Type: New Feature
>          Components: Cache, HTTP
>    Affects Versions: 3.3.4
>            Reporter: bettydramit
>            Assignee: James Peach
>             Fix For: 3.5.1
>
>         Attachments: ts-2008-v3.patch
>
>
> if you want to control on ver many suffix in cache.config: jpeg js ... you 
> need to specify:
> dest_domain=www.test.com suffix=jpeg ttl-in-cache=1m
> dest_domain=www.test.com suffix=js ttl-in-cache=1m
> ...
> and we can change to :
> dest_domain=www.test.com suffix=jpeg,js,css,html ttl-in-cache=1m

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to