提交 0e3c339b 编写于 作者: J Junio C Hamano

receive-pack: parse feature request a bit earlier

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: NJunio C Hamano <gitster@pobox.com>
上级 3bfcb95f
......@@ -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)
......@@ -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) ||
......@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册