From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 4/4] upload-pack: only accept packfile-uris if we advertised it
Date: Wed, 28 Feb 2024 15:43:16 -0800 [thread overview]
Message-ID: <xmqq5xy8jgtn.fsf@gitster.g> (raw)
In-Reply-To: <20240228225050.GA1159078@coredump.intra.peff.net> (Jeff King's message of "Wed, 28 Feb 2024 17:50:50 -0500")
Jeff King <peff@peff.net> writes:
> I suspect in the long term that we may have other ways to trigger this
> feature than the static blobpackfileuri config (e.g., a hook that knows
> about site-specific packfiles "somehow"). So we may need to update the
> test later for that, but presumably in the vanilla config we'll continue
> to skip advertising it.
Sounds quite sensible. Thanks for a series that is very pleasant to
read.
>
> t/t5702-protocol-v2.sh | 18 ++++++++++++++++++
> upload-pack.c | 16 +++++++---------
> 2 files changed, 25 insertions(+), 9 deletions(-)
>
> diff --git a/t/t5702-protocol-v2.sh b/t/t5702-protocol-v2.sh
> index 6ef4971845..902e42c1c0 100755
> --- a/t/t5702-protocol-v2.sh
> +++ b/t/t5702-protocol-v2.sh
> @@ -778,6 +778,24 @@ test_expect_success 'archive with custom path does not request v2' '
> ! grep ^GIT_PROTOCOL env.trace
> '
>
> +test_expect_success 'reject client packfile-uris if not advertised' '
> + {
> + packetize command=fetch &&
> + printf 0001 &&
> + packetize packfile-uris https &&
> + packetize done &&
> + printf 0000
> + } >input &&
> + test_must_fail env GIT_PROTOCOL=version=2 \
> + git upload-pack client <input &&
> + test_must_fail env GIT_PROTOCOL=version=2 \
> + git -c uploadpack.blobpackfileuri \
> + upload-pack client <input &&
> + GIT_PROTOCOL=version=2 \
> + git -c uploadpack.blobpackfileuri=anything \
> + upload-pack client <input
> +'
> +
> # Test protocol v2 with 'http://' transport
> #
> . "$TEST_DIRECTORY"/lib-httpd.sh
> diff --git a/upload-pack.c b/upload-pack.c
> index 491ef51daa..66f4de9d87 100644
> --- a/upload-pack.c
> +++ b/upload-pack.c
> @@ -113,6 +113,7 @@ struct upload_pack_data {
> unsigned done : 1; /* v2 only */
> unsigned allow_ref_in_want : 1; /* v2 only */
> unsigned allow_sideband_all : 1; /* v2 only */
> + unsigned allow_packfile_uris : 1; /* v2 only */
> unsigned advertise_sid : 1;
> unsigned sent_capabilities : 1;
> };
> @@ -1362,6 +1363,9 @@ static int upload_pack_config(const char *var, const char *value,
> data->allow_ref_in_want = git_config_bool(var, value);
> } else if (!strcmp("uploadpack.allowsidebandall", var)) {
> data->allow_sideband_all = git_config_bool(var, value);
> + } else if (!strcmp("uploadpack.blobpackfileuri", var)) {
> + if (value)
> + data->allow_packfile_uris = 1;
> } else if (!strcmp("core.precomposeunicode", var)) {
> precomposed_unicode = git_config_bool(var, value);
> } else if (!strcmp("transfer.advertisesid", var)) {
> @@ -1647,7 +1651,8 @@ static void process_args(struct packet_reader *request,
> continue;
> }
>
> - if (skip_prefix(arg, "packfile-uris ", &p)) {
> + if (data->allow_packfile_uris &&
> + skip_prefix(arg, "packfile-uris ", &p)) {
> string_list_split(&data->uri_protocols, p, ',', -1);
> continue;
> }
> @@ -1847,8 +1852,6 @@ int upload_pack_advertise(struct repository *r,
> get_upload_pack_config(r, &data);
>
> if (value) {
> - char *str = NULL;
> -
> strbuf_addstr(value, "shallow wait-for-done");
>
> if (data.allow_filter)
> @@ -1860,13 +1863,8 @@ int upload_pack_advertise(struct repository *r,
> if (data.allow_sideband_all)
> strbuf_addstr(value, " sideband-all");
>
> - if (!repo_config_get_string(r,
> - "uploadpack.blobpackfileuri",
> - &str) &&
> - str) {
> + if (data.allow_packfile_uris)
> strbuf_addstr(value, " packfile-uris");
> - free(str);
> - }
> }
>
> upload_pack_data_clear(&data);
next prev parent reply other threads:[~2024-02-28 23:43 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-28 22:46 [PATCH 0/4] some v2 capability advertisement cleanups Jeff King
2024-02-28 22:46 ` [PATCH 1/4] upload-pack: use repository struct to get config Jeff King
2024-03-04 7:45 ` Patrick Steinhardt
2024-02-28 22:47 ` [PATCH 2/4] upload-pack: centralize setup of sideband-all config Jeff King
2024-02-28 22:48 ` [PATCH 3/4] upload-pack: use existing config mechanism for advertisement Jeff King
2024-02-28 22:50 ` [PATCH 4/4] upload-pack: only accept packfile-uris if we advertised it Jeff King
2024-02-28 23:43 ` Junio C Hamano [this message]
2024-02-29 5:42 ` Jeff King
2024-02-29 16:34 ` Junio C Hamano
2024-03-01 7:10 ` Jeff King
2024-03-04 7:45 ` Patrick Steinhardt
2024-02-28 23:51 ` [PATCH 0/4] some v2 capability advertisement cleanups Junio C Hamano
2024-02-29 0:44 ` Jeff King
2024-03-04 7:44 ` Patrick Steinhardt
2024-03-04 10:02 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq5xy8jgtn.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).