Hi all,
I just been digging into why the Vary header is not set when generating a string expression with ap_expr_exec().
We currently set the Vary header when evaluating a condition:
https://github.com/apache/httpd/blob/53b5c234e90db489197935b84c0066c9ec083038/server/util_expr_eval.c#L1182
but we calculate the Vary header and then discard it when evaluating a string:
https://github.com/apache/httpd/blob/53b5c234e90db489197935b84c0066c9ec083038/server/util_expr_eval.c#L1166
The fix appears to be this simple:
Index: server/util_expr_eval.c
===================================================================
--- server/util_expr_eval.c (revision 1880567)
+++ server/util_expr_eval.c (working copy)
@@ -1163,6 +1163,10 @@
"Evaluation of string expression from %s:%d gave: %s",
ctx->info->filename, ctx->info->line_number,
*ctx->result_string);
+
+ if (ctx->r && ctx->vary_this && *ctx->vary_this)
+ apr_table_merge(ctx->r->headers_out, "Vary", *ctx->vary_this);
+
return 1;
}
}
Apart from a sudden outbreak of RFC compliance, what effect might this have on a backport to v2.4?
Regards,
Graham
—
I just been digging into why the Vary header is not set when generating a string expression with ap_expr_exec().
We currently set the Vary header when evaluating a condition:
https://github.com/apache/httpd/blob/53b5c234e90db489197935b84c0066c9ec083038/server/util_expr_eval.c#L1182
but we calculate the Vary header and then discard it when evaluating a string:
https://github.com/apache/httpd/blob/53b5c234e90db489197935b84c0066c9ec083038/server/util_expr_eval.c#L1166
The fix appears to be this simple:
Index: server/util_expr_eval.c
===================================================================
--- server/util_expr_eval.c (revision 1880567)
+++ server/util_expr_eval.c (working copy)
@@ -1163,6 +1163,10 @@
"Evaluation of string expression from %s:%d gave: %s",
ctx->info->filename, ctx->info->line_number,
*ctx->result_string);
+
+ if (ctx->r && ctx->vary_this && *ctx->vary_this)
+ apr_table_merge(ctx->r->headers_out, "Vary", *ctx->vary_this);
+
return 1;
}
}
Apart from a sudden outbreak of RFC compliance, what effect might this have on a backport to v2.4?
Regards,
Graham
—