Hi Joe, Thanks for catching this. I reproduced the failure and traced it to a race between the first response completing and the cache entry being committed, unrelated to the Cache-Control parsing change.
I've opened PR #864 <https://github.com/apache/httpd/pull/864> to address the test flakiness. The fix has been validated locally, including the proxy test suite. Regards, Arturo On Tue, Oct 20, 2026 at 11:35 AM Joe Orton <[email protected]> wrote: > On Mon, Oct 19, 2026 at 10:04:36AM -0000, [email protected] wrote: > > Author: abernal > > Date: Mon Oct 19 10:04:36 2026 > > New Revision: 1939267 > > > > Log: > > mod_cache: Parse comma separated Cache-Control directives again. > > > > cache_strqtok() did not end a token at a comma or whitespace unless an > > argument followed, so "private, no-store" was read as one token and the > > response was stored. Stop at any non-token character, after the '=' > > test. > > > > This is a trunk-only regression from r1856507, which rewrote the > > tokenizer as a state machine and dropped the T_HTTP_TOKEN_STOP check in > > the token state that r1856493 and r1856500 still had. > > This one has tripped on Windows in this build - > > https://github.com/apache/httpd/actions/runs/39301887856/job/118228919357#step:11:1375 > > FAILED > modules/proxy/test_07_cache_control.py::TestCacheControl::test_proxy_07_002[17] > - AssertionError: Cache-Control: public, s-maxage=60 not cached > assert 2 == 1 > + where 2 = backend_hits(17) > + where backend_hits = > <modules.proxy.test_07_cache_control.TestCacheControl object at > 0x0000017B8F932960>.backend_hits > !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures > !!!!!!!!!!!!!!!!!!!!!!!!!! > > Regards, Joe >
