Adds support for multiple SSH auth mechanisms being used sequentially
diff --git a/src/transports/ssh.c b/src/transports/ssh.c
index 2159418..0c492ca 100644
--- a/src/transports/ssh.c
+++ b/src/transports/ssh.c
@@ -518,6 +518,7 @@ static int _git_ssh_setup_conn(
{
git_net_url urldata = GIT_NET_URL_INIT;
int auth_methods, error = 0;
+ int sub_error;
size_t i;
ssh_stream *s;
git_cred *cred = NULL;
@@ -638,6 +639,15 @@ post_extract:
}
error = _git_ssh_authenticate_session(session, cred);
+
+ if (error == GIT_EAUTH) {
+ /* refresh auth methods */
+ sub_error = list_auth_methods(&auth_methods, session, urldata.username);
+ if (sub_error < 0) {
+ error = sub_error;
+ goto done;
+ }
+ }
}
if (error < 0)