diff options
-rw-r--r-- | src/transports/auth.c | 2 | ||||
-rw-r--r-- | src/transports/http.c | 11 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/transports/auth.c b/src/transports/auth.c index 773e3020a..4fcf73cb5 100644 --- a/src/transports/auth.c +++ b/src/transports/auth.c @@ -70,6 +70,6 @@ int git_http_auth_dummy( GIT_UNUSED(url); *out = NULL; - return 0; + return GIT_PASSTHROUGH; } diff --git a/src/transports/http.c b/src/transports/http.c index d727851b7..7ec681c41 100644 --- a/src/transports/http.c +++ b/src/transports/http.c @@ -430,6 +430,7 @@ static int init_auth(http_server *server) git_http_auth_scheme *s, *scheme = NULL; char *c, *challenge = NULL; size_t i; + int error; git_vector_foreach(&server->auth_challenges, i, c) { s = scheme_for_challenge(c); @@ -446,12 +447,14 @@ static int init_auth(http_server *server) return -1; } - if (scheme->init_context(&server->auth_context, &server->url) < 0) - return -1; + if ((error = scheme->init_context(&server->auth_context, &server->url)) == GIT_PASSTHROUGH) + return 0; + else if (error < 0) + return error; if (server->auth_context->set_challenge && - server->auth_context->set_challenge(server->auth_context, challenge) < 0) - return -1; + (error = server->auth_context->set_challenge(server->auth_context, challenge)) < 0) + return error; return 0; } |