﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	uname	nginx_version
2029	"Cache miss due to ""cache file .. has too long header"" when using ""Vary"""	João Salavessa		"There are some cases when ""Vary"" header is present and it changes value in a consequent call then a perfectly valid newly updated cache file (e.g. from a MISS) can trigger another MISS on the next exact same call due to ""cache file .. has too long header"" check.

Attached ""nginx.conf"" and ""test-cases.sh"" which contains description of issue and functions with call sequences that consistently reproduce the issue (tested on the current latest nginx versions 1.18.0 and 1.19.2):
	- the ""returnVary"" req header asks the server to return the request header value as Vary response header value
	- the ""xtra"" req header header asks the server to include a ""Xtra"" response header with the respective value

To execute attached test cases just start a local nginx using the attached ""nginx.conf"" file and:
{{{
# test cases execution: ""loop"" executes function in first argument, 4 times with 3s sleep between each (nginx.conf cache TTL is 5s)

# source test case functions
. ./test-cases.sh

# execution command examples
loop tc1 #not ok
loop tc2 #not ok
loop tc3 #ok
loop tc4 #ok
loop tc5 #ok
tc3_5; sleep 6; tc4_5 #not ok
}}}
"	defect	closed	major		nginx-module	1.19.x	fixed	proxy cache vary	João Salavessa	Linux nginx-54959fc7bf-ncmrh 4.19.114 #1 SMP Mon Aug 3 12:35:22 PDT 2020 x86_64 Linux	"nginx version: nginx/1.19.2
built by gcc 9.3.0 (Alpine 9.3.0)
built with OpenSSL 1.1.1g  21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/a
ccess.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cach
e/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-perl_modules_path=/usr/lib/perl5/vendor_perl --user=nginx --group=nginx --with-compat -
-with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module
 --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module -
-with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-Os -fomit-frame-pointer' --with-ld-opt=-Wl,--as-needed"
