http_init: accept separate URL parameter
The http_init function takes a "struct remote". Part of its initialization procedure is to look at the remote's url and grab some auth-related parameters. However, using the url included in the remote is: - wrong; the remote-curl helper may have a separate, unrelated URL (e.g., from remote.*.pushurl). Looking at the remote's configured url is incorrect. - incomplete; http-fetch doesn't have a remote, so passes NULL. So http_init never gets to see the URL we are actually going to use. - cumbersome; http-push has a similar problem to http-fetch, but actually builds a fake remote just to pass in the URL. Instead, let's just add a separate URL parameter to http_init, and all three callsites can pass in the appropriate information. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
070b4dd589
commit
deba49377b
8
http.c
8
http.c
@ -369,7 +369,7 @@ static void set_from_env(const char **var, const char *envname)
|
||||
*var = val;
|
||||
}
|
||||
|
||||
void http_init(struct remote *remote)
|
||||
void http_init(struct remote *remote, const char *url)
|
||||
{
|
||||
char *low_speed_limit;
|
||||
char *low_speed_time;
|
||||
@ -433,11 +433,11 @@ void http_init(struct remote *remote)
|
||||
if (getenv("GIT_CURL_FTP_NO_EPSV"))
|
||||
curl_ftp_no_epsv = 1;
|
||||
|
||||
if (remote && remote->url && remote->url[0]) {
|
||||
http_auth_init(remote->url[0]);
|
||||
if (url) {
|
||||
http_auth_init(url);
|
||||
if (!ssl_cert_password_required &&
|
||||
getenv("GIT_SSL_CERT_PASSWORD_PROTECTED") &&
|
||||
!prefixcmp(remote->url[0], "https://"))
|
||||
!prefixcmp(url, "https://"))
|
||||
ssl_cert_password_required = 1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user