Subject: [PATCH 11/16] promisor-remote: refactor should_accept_remote() control flow

From: Christian Couder <[email-masked]>
Date: Mon, 23 Mar 2026 09:05:14 +0100

In following commits, we are going to add URL-based acceptance logic
into should_accept_remote().

To prepare for the upcoming changes, let's restructure the control flow
in should_accept_remote().

Concretely, let's:

 - Move the empty-URL check to the very top of the function, so that
   every acceptance mode, instead of only ACCEPT_KNOWN_URL, rejects
   remotes with a missing or blank URL early.

 - Invert the URL comparison: instead of returning on match and
   warning on mismatch, return early on mismatch and let the match
   case fall through. This opens a single exit path at the bottom of
   the function for following commits to extend.

Anyway the server shouldn't send any empty URL in the first place, so
this shouldn't change any behavior in practice.

Signed-off-by: Christian Couder <[email-masked]>
---
 promisor-remote.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/promisor-remote.c b/promisor-remote.c
index 8f2c1280c3..c2f0eb7223 100644
--- a/promisor-remote.c
+++ b/promisor-remote.c
@@ -665,6 +665,12 @@ static int should_accept_remote(enum accept_promisor accept,
 	const char *remote_name = advertised->name;
 	const char *remote_url = advertised->url;
 
+	if (!remote_url || !*remote_url) {
+		warning(_("no or empty URL advertised for remote '%s', "
+			  "ignoring this remote"), remote_name);
+		return 0;
+	}
+
 	if (accept == ACCEPT_ALL)
 		return all_fields_match(advertised, config_info, NULL);
 
@@ -683,19 +689,14 @@ static int should_accept_remote(enum accept_promisor accept,
 	if (accept != ACCEPT_KNOWN_URL)
 		BUG("Unhandled 'enum accept_promisor' value '%d'", accept);
 
-	if (!remote_url || !*remote_url) {
-		warning(_("no or empty URL advertised for remote '%s', "
-			  "ignoring this remote"), remote_name);
+	if (strcmp(p->url, remote_url)) {
+		warning(_("known remote named '%s' but with URL '%s' instead of '%s', "
+			  "ignoring this remote"),
+			remote_name, p->url, remote_url);
 		return 0;
 	}
 
-	if (!strcmp(p->url, remote_url))
-		return all_fields_match(advertised, config_info, p);
-
-	warning(_("known remote named '%s' but with URL '%s' instead of '%s', "
-		  "ignoring this remote"), remote_name, p->url, remote_url);
-
-	return 0;
+	return all_fields_match(advertised, config_info, p);
 }
 
 static int skip_field_name_prefix(const char *elem, const char *field_name, const char **value)
-- 
2.53.0.625.g20f70b52bb