Re: [PATCH] connect: also update offset for features without values
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 23, 2021, 21:20 UTC
- Message-ID
- <xmqq4kabyoo3.fsf@gitster.g>
- In-Reply-To
- <pull.1091.git.git.1631970872884.gitgitgadget@gmail.com>
"Andrzej Hunt via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 37 quoted lines
> diff --git a/connect.c b/connect.c
> index aff13a270e6..eaf7d6d2618 100644
> --- a/connect.c
> +++ b/connect.c
> @@ -557,6 +557,8 @@ const char *parse_feature_value(const char *feature_list, const char *feature, i
> if (!*value || isspace(*value)) {
> if (lenp)
> *lenp = 0;
> + if (offset)
> + *offset = found + len - feature_list;
> return value;
> }
> /* feature with a value (e.g., "agent=git/1.2.3") */
> diff --git a/t/t5704-protocol-violations.sh b/t/t5704-protocol-violations.sh
> index 5c941949b98..34538cebf01 100755
> --- a/t/t5704-protocol-violations.sh
> +++ b/t/t5704-protocol-violations.sh
> @@ -32,4 +32,17 @@ test_expect_success 'extra delim packet in v2 fetch args' '
> test_i18ngrep "expected flush after fetch arguments" err
> '
>
> +test_expect_success 'bogus symref in v0 capabilities' '
> + test_commit foo &&
> + oid=$(git rev-parse HEAD) &&
> + {
> + printf "%s HEAD\0symref object-format=%s\n" "$oid" "$GIT_DEFAULT_HASH" |
> + test-tool pkt-line pack-raw-stdin &&
> + printf "0000"
> + } >input &&
> + git ls-remote --upload-pack="cat input ;:" . >actual &&
> + printf "%s\tHEAD\n" "$oid" >expect &&
> + test_cmp expect actual
> +'
> +
> test_done
>
> base-commit: 186eaaae567db501179c0af0bf89b34cbea02c26I've been seeing an occasional and not-reliably-reproducible test failure from t5704 in 'seen' these days---since this is the only commit that touches t5704, I am suspecting if there is something racy about it, but I am coming up empty after staring at it for a few minutes.
Building 87446480 (connect: also update offset for features without values, 2021-09-18), which is an application of the patch directly on top of v2.33.0, and doing
$ cd t
$ while sh t5704-*.sh; do :; doneI can get it fail in a dozen iterations or so when the box is loaded, so it does seem timing dependent.