X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=transport.c;h=0a5cf0a9c29c34a7f0fd0d53a5f6472ab2f2fa4f;hb=4bea4b8451cd481a101fcf25583a270fe18371d3;hp=397983d1155bed967bd48ad47dbbb81cb2e45168;hpb=7cb97da17da080b88ceb0417108e6a3cb6c6299f;p=git.git diff --git a/transport.c b/transport.c index 397983d11..0a5cf0a9c 100644 --- a/transport.c +++ b/transport.c @@ -622,6 +622,7 @@ static int fetch_refs_via_pack(struct transport *transport, char *dest = xstrdup(transport->url); struct fetch_pack_args args; int i; + struct ref *refs_tmp = NULL; memset(&args, 0, sizeof(args)); args.uploadpack = data->uploadpack; @@ -634,15 +635,13 @@ static int fetch_refs_via_pack(struct transport *transport, for (i = 0; i < nr_heads; i++) origh[i] = heads[i] = xstrdup(to_fetch[i]->name); - refs = transport_get_remote_refs(transport); if (!data->conn) { - struct ref *refs_tmp; connect_setup(transport); get_remote_heads(data->fd[0], &refs_tmp, 0, NULL, 0); - free_refs(refs_tmp); } - refs = fetch_pack(&args, data->fd, data->conn, transport->remote_refs, + refs = fetch_pack(&args, data->fd, data->conn, + refs_tmp ? refs_tmp : transport->remote_refs, dest, nr_heads, heads, &transport->pack_lockfile); close(data->fd[0]); close(data->fd[1]); @@ -650,6 +649,8 @@ static int fetch_refs_via_pack(struct transport *transport, refs = NULL; data->conn = NULL; + free_refs(refs_tmp); + for (i = 0; i < nr_heads; i++) free(origh[i]); free(origh);