Skip to content

🐛 fix(http): honor If-Match conditions - #1847

Merged
gaborbernat merged 1 commit into
mainfrom
fix/if-match-1150
Aug 29, 2026
Merged

gaborbernat merged 1 commit into
mainfrom
fix/if-match-1150

Conversation

@gaborbernat

@gaborbernat gaborbernat commented Aug 29, 2026

Copy link
Copy Markdown
Member

Management clients could send only one numeric entity tag. Weak tags matched as strong, and false repository preconditions returned 409 Conflict, contrary to RFC 9110 section 13.1.1.

Peryx now parses RFC entity-tag lists and * once, then passes a typed condition into the storage transaction. Visible false conditions return 412 Precondition Failed; authorization failures still return 404 without reading the requested grant or repository.

Closes #1150

@gaborbernat gaborbernat added the bug Something isn't working label Aug 29, 2026
@gaborbernat gaborbernat self-assigned this Aug 29, 2026
@codspeed

codspeed Bot commented Aug 29, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 23 untouched benchmarks
⏩ 139 skipped benchmarks1


Comparing fix/if-match-1150 (9da1ef7) with main (f92ab93)

Open in CodSpeed

Footnotes

  1. 139 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@gaborbernat
gaborbernat force-pushed the fix/if-match-1150 branch 3 times, most recently from a7d8bad to b1f7ec0 Compare August 29, 2026 20:25
Management mutations accepted one numeric tag, treated weak tags as strong
matches, and reported repository mismatches as conflicts instead of failed
preconditions.

Parse the RFC field once and carry its typed condition into the write
transaction. This keeps existence checks, strong comparison, and mutation
atomic while preserving authorization concealment.
@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 peryx | 🛠️ Build #34293305 | 📁 Comparing 9da1ef7 against latest (def93ef)

  🔍 Preview build  

1 file changed
± core/operations/backup-restore/index.html

@gaborbernat
gaborbernat merged commit ef5f97c into main Aug 29, 2026
32 checks passed
@gaborbernat
gaborbernat deleted the fix/if-match-1150 branch August 29, 2026 20:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Honor HTTP If-Match on management mutations

1 participant