This just moves the code to read the server capability list that is hidden after "40-byte hex object name, SP, refname, NUL" on the information the uploading end initially sends. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- connect.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/connect.c b/connect.c index 584e04c..932c503 100644 --- a/connect.c +++ b/connect.c @@ -49,6 +49,21 @@ static void add_extra_have(struct extra_have_objects *extra, unsigned char *sha1 } /* + * "line" points at the byte just after "40-byte hex, SP, refname, + * NUL". "len" is the remaining number of bytes. The caller knows + * that the original packet contains more information than that. + */ +static void read_extra_info(char *line, int len) +{ + /* + * The first such "extra" piece of information is the list of + * server capabilities. + */ + free(server_capabilities); + server_capabilities = xstrdup(line); +} + +/* * Read all the refs from the other end */ struct ref **get_remote_heads(int in, struct ref **list, @@ -78,10 +93,8 @@ struct ref **get_remote_heads(int in, struct ref **list, name = buffer + 41; name_len = strlen(name); - if (len != name_len + 41) { - free(server_capabilities); - server_capabilities = xstrdup(name + name_len + 1); - } + if (len != name_len + 41) + read_extra_info(name + name_len + 1, len - (name_len + 41)); if (extra_have && name_len == 5 && !memcmp(".have", name, 5)) { -- 1.6.0.4.864.g0f47a -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html