Follow-up from the ETag support assessment (label: etag-range-followup).
internal/strategy/apiv1.go:checkConditionals compares with exact string equality, so a list-valued If-None-Match: "a", "b" or If-Match: "a", "b" never matches, even though RFC 7232 allows lists.
Work
- Parse the
If-Match / If-None-Match header into individual ETags and match against any entry.
- Preserve existing
* wildcard behaviour.
- Stored ETags are always strong, so weak-comparison handling is not required.
Acceptance
List-valued If-Match/If-None-Match headers match when any listed ETag matches; single-ETag and * behaviour unchanged. Add table-driven tests covering single, list, and wildcard cases.
Follow-up from the ETag support assessment (label: etag-range-followup).
internal/strategy/apiv1.go:checkConditionalscompares with exact string equality, so a list-valuedIf-None-Match: "a", "b"orIf-Match: "a", "b"never matches, even though RFC 7232 allows lists.Work
If-Match/If-None-Matchheader into individual ETags and match against any entry.*wildcard behaviour.Acceptance
List-valued
If-Match/If-None-Matchheaders match when any listed ETag matches; single-ETag and*behaviour unchanged. Add table-driven tests covering single, list, and wildcard cases.