Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
receive-pack: parse feature request a bit earlier
author
Junio C Hamano
<gitster@pobox.com>
Fri, 15 Aug 2014 21:11:33 +0000
(14:11 -0700)
committer
Junio C Hamano
<gitster@pobox.com>
Mon, 15 Sep 2014 20:23:18 +0000
(13:23 -0700)
Ideally, we should have also allowed the first "shallow" to carry
the feature request trailer, but that is water under the bridge
now. This makes the next step to factor out the queuing of commands
easier to review.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (from parent 1:
3bfcb95
)
diff --git
a/builtin/receive-pack.c
b/builtin/receive-pack.c
index 1663bebaa27d869c04e8d7638de07cc443605d78..a91eec8b1c3e1dfd955d370c112a7bd2010243bd 100644
(file)
--- a/
builtin/receive-pack.c
+++ b/
builtin/receive-pack.c
@@
-840,7
+840,7
@@
static struct command *read_head_info(struct sha1_array *shallow)
unsigned char old_sha1[20], new_sha1[20];
struct command *cmd;
char *refname;
unsigned char old_sha1[20], new_sha1[20];
struct command *cmd;
char *refname;
- int len, reflen;
+ int len, reflen
, linelen
;
line = packet_read_line(0, &len);
if (!line)
line = packet_read_line(0, &len);
if (!line)
@@
-853,7
+853,18
@@
static struct command *read_head_info(struct sha1_array *shallow)
continue;
}
continue;
}
- if (len < 83 ||
+ linelen = strlen(line);
+ if (linelen < len) {
+ const char *feature_list = line + linelen + 1;
+ if (parse_feature_request(feature_list, "report-status"))
+ report_status = 1;
+ if (parse_feature_request(feature_list, "side-band-64k"))
+ use_sideband = LARGE_PACKET_MAX;
+ if (parse_feature_request(feature_list, "quiet"))
+ quiet = 1;
+ }
+
+ if (linelen < 83 ||
line[40] != ' ' ||
line[81] != ' ' ||
get_sha1_hex(line, old_sha1) ||
line[40] != ' ' ||
line[81] != ' ' ||
get_sha1_hex(line, old_sha1) ||
@@
-862,16
+873,7
@@
static struct command *read_head_info(struct sha1_array *shallow)
line);
refname = line + 82;
line);
refname = line + 82;
- reflen = strlen(refname);
- if (reflen + 82 < len) {
- const char *feature_list = refname + reflen + 1;
- if (parse_feature_request(feature_list, "report-status"))
- report_status = 1;
- if (parse_feature_request(feature_list, "side-band-64k"))
- use_sideband = LARGE_PACKET_MAX;
- if (parse_feature_request(feature_list, "quiet"))
- quiet = 1;
- }
+ reflen = linelen - 82;
cmd = xcalloc(1, sizeof(struct command) + reflen + 1);
hashcpy(cmd->old_sha1, old_sha1);
hashcpy(cmd->new_sha1, new_sha1);
cmd = xcalloc(1, sizeof(struct command) + reflen + 1);
hashcpy(cmd->old_sha1, old_sha1);
hashcpy(cmd->new_sha1, new_sha1);