Re: [PATCH 08/16] use skip_prefix to avoid magic numbers

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH 08/16] use skip_prefix to avoid magic numbers

From: Junio C Hamano <hidden>
Date: 2016-06-15 23:01:44

Jeff King [off-list ref] writes:
quoted hunk
diff --git a/connect.c b/connect.c
index 94a6650..37ff018 100644
--- a/connect.c
+++ b/connect.c
@@ -140,12 +141,12 @@ struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
 		if (!len)
 			break;
 
-		if (len > 4 && starts_with(buffer, "ERR "))
-			die("remote error: %s", buffer + 4);
+		if (len > 4 && skip_prefix(buffer, "ERR ", &arg))
+			die("remote error: %s", arg);
Makes one wonder if we should do something special to a line with
only "ERR " and nothing else on it, which the other end may have
meant us to give a blank line to make the output more readable.

A fix, if one turns out to be needed, is outside the scope of this
patch, though, I think.

Re: [PATCH 08/16] use skip_prefix to avoid magic numbers

From: Jeff King <hidden>
Date: 2016-06-15 23:01:47

On Mon, Jun 23, 2014 at 02:44:23PM -0700, Junio C Hamano wrote:
Jeff King [off-list ref] writes:
quoted
diff --git a/connect.c b/connect.c
index 94a6650..37ff018 100644
--- a/connect.c
+++ b/connect.c
@@ -140,12 +141,12 @@ struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
 		if (!len)
 			break;
 
-		if (len > 4 && starts_with(buffer, "ERR "))
-			die("remote error: %s", buffer + 4);
+		if (len > 4 && skip_prefix(buffer, "ERR ", &arg))
+			die("remote error: %s", arg);
Makes one wonder if we should do something special to a line with
only "ERR " and nothing else on it, which the other end may have
meant us to give a blank line to make the output more readable.
I don't think that would buy us much. We have always accepted only a
single ERR line and died immediately. So any changes of that nature
would have to be made in the client, and then servers would have to wait
N time units before it was safe to start using the feature (otherwise
old clients just get the blank line!).

I also don't think blank lines by themselves are useful. You'd want them
in addition to being able to handle multiple lines. So a nicer fix is
more along the lines of "accept multiple ERR lines, including blank
lines, followed by a terminating line ("ERRDONE" or something).

Then servers can do:

  ERR unable to access foo.git: Printer on fire
  ERR
  ERR You may have misspelled the repository name. Did you mean:
  ERR
  ERR  foobar.git
  ERRDONE

Old clients would see the first line and die. Newer clients would print
the helpful hint. Servers would just need to make sure that the first
line stands on its own to cover both cases.
A fix, if one turns out to be needed, is outside the scope of this
patch, though, I think.
Yeah, definitely a separate topic.

It is not something I think anybody has asked for, but I can imagine a
site like GitHub making use of it (we already show custom errors for
http, but there's no room beyond the single ERR line). And teaching the
clients now expands the options for servers later. So it might be worth
doing just as a potential feature.

-Peff
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help