For these types of paths, where we use a switch/case against the 1st char of the token, the real reason why we used that impl was to avoid the (expected) expensive string comparison.
This is really no longer an issue. Sure, we could still use this "fast path" short-circuit, but even that is non-optimal. For the below, what we really should be testing is: if (!ap_casecmpstr(token+1, "ublic")) { for example. Sooooo the question is: Do we remove these silly fast-paths that no longer make sense[1] or optimize for the "we know the 1st char" case ala the above? 1. eg: while (token) { if (!ap_casecmpstrn(token, "no-cache", 8)) { if (token[8] == '=') { cc->no_cache_header = 1; } else if (!token[8]) { cc->no_cache = 1; } } else if (!ap_casecmpstr(token, "no-store")) { cc->no_store = 1; } else if (!ap_casecmpstr(token, "no-transform")) { cc->no_transform = 1; } else if (!ap_casecmpstrn(token, "max-age", 7)) { if (token[7] == '=' && !apr_strtoff(&offt, token + 8, &endp, 10) && endp > token + 8 && !*endp) { cc->max_age = 1; cc->max_age_value = offt; } } else if (!ap_casecmpstr(token, "must-revalidate")) { cc->must_revalidate = 1; } else if (!ap_casecmpstrn(token, "max-stale", 9)) { if (token[9] == '=' && !apr_strtoff(&offt, token + 10, &endp, 10) && endp > token + 10 && !*endp) { cc->max_stale = 1; cc->max_stale_value = offt; } else if (!token[9]) { cc->max_stale = 1; cc->max_stale_value = -1; } } else if (!ap_casecmpstrn(token, "min-fresh", 9)) { if (token[9] == '=' && !apr_strtoff(&offt, token + 10, &endp, 10) && endp > token + 10 && !*endp) { cc->min_fresh = 1; cc->min_fresh_value = offt; } } ... > On Nov 23, 2015, at 3:05 PM, yla...@apache.org wrote: > > Author: ylavic > Date: Mon Nov 23 20:05:16 2015 > New Revision: 1715938 > > URL: http://svn.apache.org/viewvc?rev=1715938&view=rev > Log: > Follow up to r1715876: fix typo. > > Modified: > httpd/httpd/trunk/modules/cache/cache_util.c > > Modified: httpd/httpd/trunk/modules/cache/cache_util.c > URL: > http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/cache/cache_util.c?rev=1715938&r1=1715937&r2=1715938&view=diff > ============================================================================== > --- httpd/httpd/trunk/modules/cache/cache_util.c (original) > +++ httpd/httpd/trunk/modules/cache/cache_util.c Mon Nov 23 20:05:16 2015 > @@ -1074,7 +1074,8 @@ int ap_cache_control(request_rec *r, cac > } > break; > } > - case 'p': { > + case 'p': > + case 'P': { > if (!ap_casecmpstr(token, "public")) { > cc->public = 1; > } > >