fangorn/ex_git_objectstore
public
ref:cfb369231afdd490eb7d857276d885afdf0cf130
fix: treat only flush (0000) as v2 command terminator, not delim (0001)
`has_complete_command?` was matching on both flush and delim packets.
Delim is an intra-command section separator between `command=...` and
the argument block, NOT a terminator. When the request arrived split
across multiple TCP chunks and the first chunk ended at the delim, the
state machine processed an incomplete fetch request and transitioned
to :done, silently dropping the rest.
The integration test
test "fetch request response is invariant under TCP chunking"
exercises this directly — feeds a known-good fetch request through the
state machine sliced at 20 different random offsets and asserts the
response matches the whole-blob baseline.
Closes #29.
SHA:
cfb369231afdd490eb7d857276d885afdf0cf130
Author:
Cole Christensen <cole.christensen@macmillan.com>
Date:
2026-04-19 00:18
Parents:
df64bdb
1 files changed
+7
-8
| Type | ||
|---|---|---|
|
|
lib/ex_git_objectstore/protocol/upload_pack_v2.ex | +7 −8 |
|
||