connected: close err_fd in promisor fast-path
connected.h documents that err_fd is closed before check_connected() returns. It is, on three of four exit paths. The promisor-pack fast path added inmain50033772d(connected: verify promisor-ness of partial clone, 2020-01-30) returns 0 without closing it. receive-pack uses err_fd as the write end of an async sideband muxer's pipe, and the muxer thread waits for EOF. The same omission has caused deadlocks there twice before:49ecfa13f(receive-pack: close sideband fd on early pack errors, 2013-04-19) and6cdad1f13(receive-pack: fix deadlock when we cannot create tmpdir, 2017-03-07). Signed-off-by: Ethan Dickson <ethanndickson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
parent
67ad42147a
commit
d9982e8290
|
|
@ -91,6 +91,8 @@ promisor_pack_found:
|
|||
;
|
||||
} while ((oid = fn(cb_data)) != NULL);
|
||||
free(new_pack);
|
||||
if (opt->err_fd)
|
||||
close(opt->err_fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue