2017-09-19 12:13 GMT+02:00 Yann Ylavic <[email protected]>: > Hi Luca, > > On Tue, Sep 19, 2017 at 11:02 AM, Luca Toscano <[email protected]> > wrote: > > > > Something like the following? What do you think? > > After a quick look, I think we should put the test in looker_header, like: > > Index: modules/mappers/mod_rewrite.c > =================================================================== > --- modules/mappers/mod_rewrite.c (revision 1808823) > +++ modules/mappers/mod_rewrite.c (working copy) > @@ -1796,7 +1796,7 @@ static const char *lookup_header(const char *name, > { > const char *val = apr_table_get(ctx->r->headers_in, name); > > - if (val) { > + if (val && strcasecmp(name, "Host") != 0) { > ctx->vary_this = ctx->vary_this > ? apr_pstrcat(ctx->r->pool, ctx->vary_this, ", ", > name, NULL) > -- > > The call sites either have the name to be really checked (e.g. var+5), > or they use string literals (e.g. "Host", "Accept", ...) thus the > compiler is able to inline and optimize in or out the test by itself. > > > > Index: server/util_expr_eval.c > > =================================================================== > > --- server/util_expr_eval.c (revision 1808842) > > +++ server/util_expr_eval.c (working copy) > > @@ -1044,7 +1044,12 @@ > > t = ctx->r->headers_in; > > else { /* req, http */ > > t = ctx->r->headers_in; > > - add_vary(ctx, arg); > > + /* Skip the 'Vary: Host' header combination > > + * as indicated in rfc7231 section-7.1.4 > > + */ > > + if (strcmp(arg, "Host")){ > > + add_vary(ctx, arg); > > + } > > } > > return apr_table_get(t, arg); > > } > > This one looks good. >
Try number two: http://home.apache.org/~elukey/httpd-trunk_no_vary_host.patch :) Thanks, Luca
