From: Junio C Hamano Date: Thu, 26 May 2011 16:32:14 +0000 (-0700) Subject: Merge branch 'js/maint-send-pack-stateless-rpc-deadlock-fix' into maint X-Git-Tag: v1.7.5.3~13 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/f09937de964bb30e0614123daa9051afbffb4408?hp=46bf76ac317031818ca7ff8d44d35ff79dae61d2 Merge branch 'js/maint-send-pack-stateless-rpc-deadlock-fix' into maint * js/maint-send-pack-stateless-rpc-deadlock-fix: sideband_demux(): fix decl-after-stmt send-pack: unbreak push over stateless rpc send-pack: avoid deadlock when pack-object dies early --- diff --git a/builtin/send-pack.c b/builtin/send-pack.c index 8b0911c0d2..e6a3495e1c 100644 --- a/builtin/send-pack.c +++ b/builtin/send-pack.c @@ -228,8 +228,11 @@ static void print_helper_status(struct ref *ref) static int sideband_demux(int in, int out, void *data) { - int *fd = data; - int ret = recv_sideband("send-pack", fd[0], out); + int *fd = data, ret; +#ifdef NO_PTHREADS + close(fd[1]); +#endif + ret = recv_sideband("send-pack", fd[0], out); close(out); return ret; } @@ -339,6 +342,8 @@ int send_pack(struct send_pack_args *args, if (pack_objects(out, remote_refs, extra_have, args) < 0) { for (ref = remote_refs; ref; ref = ref->next) ref->status = REF_STATUS_NONE; + if (args->stateless_rpc) + close(out); if (use_sideband) finish_async(&demux); return -1;