Skip to content

Commit

Permalink
receive-pack: parse feature request a bit earlier
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Sep 15, 2014
1 parent 3bfcb95 commit 0e3c339
Showing 1 changed file with 14 additions and 12 deletions.
26 changes: 14 additions & 12 deletions builtin/receive-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
int len, reflen;
int len, reflen, linelen;

line = packet_read_line(0, &len);
if (!line)
Expand All @@ -853,7 +853,18 @@ static struct command *read_head_info(struct sha1_array *shallow)
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) ||
Expand All @@ -862,16 +873,7 @@ static struct command *read_head_info(struct sha1_array *shallow)
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);
Expand Down

0 comments on commit 0e3c339

Please sign in to comment.