Am 23.04.2020 um 21:38 schrieb Junio C Hamano:
My reading of the code tells me that it is *not* the case. When the caller asks to connect only over IPv4 with CONNECT_IPV4 bit set in the flags, we cannot translate that to an option to underlying SSH implementation without knowing the variant. As long as the caller does not specify IPV4/IPV6 or custom port, I think it is OK for the caller to leave the variant AUTO. So you probably want a patch along the lines of... connect.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connect.c b/connect.c index b6451ab5e8..b02cf74c9a 100644 --- a/connect.c +++ b/connect.c @@ -1118,7 +1118,7 @@ static void push_ssh_options(struct argv_array *args, struct argv_array *env, if (flags & CONNECT_IPV4) { switch (variant) { case VARIANT_AUTO: - BUG("VARIANT_AUTO passed to push_ssh_options"); + BUG("VARIANT_AUTO and CONNECT_IPV4 used together"); case VARIANT_SIMPLE: die(_("ssh variant 'simple' does not support -4")); case VARIANT_SSH:
Yes, that looks about right. I'll extend the patch to also cover CONNECT_IPV6 and a custom port, give it a run through the test suite and send it back with a commit message. Thanks for taking a look at the legitimate cases where VARIANT_AUTO gets passed to push_ssh_options.