Merge branch 'js/maint-send-pack-stateless-rpc-deadlock-fix' into maint-1.7.4
* 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
This commit is contained in:
@ -228,8 +228,11 @@ static void print_helper_status(struct ref *ref)
|
|||||||
|
|
||||||
static int sideband_demux(int in, int out, void *data)
|
static int sideband_demux(int in, int out, void *data)
|
||||||
{
|
{
|
||||||
int *fd = data;
|
int *fd = data, ret;
|
||||||
int ret = recv_sideband("send-pack", fd[0], out);
|
#ifdef NO_PTHREADS
|
||||||
|
close(fd[1]);
|
||||||
|
#endif
|
||||||
|
ret = recv_sideband("send-pack", fd[0], out);
|
||||||
close(out);
|
close(out);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -339,6 +342,8 @@ int send_pack(struct send_pack_args *args,
|
|||||||
if (pack_objects(out, remote_refs, extra_have, args) < 0) {
|
if (pack_objects(out, remote_refs, extra_have, args) < 0) {
|
||||||
for (ref = remote_refs; ref; ref = ref->next)
|
for (ref = remote_refs; ref; ref = ref->next)
|
||||||
ref->status = REF_STATUS_NONE;
|
ref->status = REF_STATUS_NONE;
|
||||||
|
if (args->stateless_rpc)
|
||||||
|
close(out);
|
||||||
if (use_sideband)
|
if (use_sideband)
|
||||||
finish_async(&demux);
|
finish_async(&demux);
|
||||||
return -1;
|
return -1;
|
||||||
|
Reference in New Issue
Block a user