mirror of https://github.com/moparisthebest/curl
"H. Daphne Luong" <daphne@tellme.com> pointed out that curl cannot destroy
the proxy server data internally as it did, since when doing a location: following it needs the proxy server string several times.
This commit is contained in:
parent
4a33436663
commit
2f668aba96
24
lib/url.c
24
lib/url.c
|
@ -1018,6 +1018,18 @@ static UrgError _urlget(struct UrlData *data)
|
||||||
char *prox_portno;
|
char *prox_portno;
|
||||||
char *endofprot;
|
char *endofprot;
|
||||||
|
|
||||||
|
/* We need to make a duplicate of the proxy so that we can modify the
|
||||||
|
string safely. */
|
||||||
|
char *proxydup=strdup(data->proxy);
|
||||||
|
|
||||||
|
/* We use 'proxyptr' to point to the proxy name from now on... */
|
||||||
|
char *proxyptr=proxydup;
|
||||||
|
|
||||||
|
if(NULL == proxydup) {
|
||||||
|
failf(data, "memory shortage");
|
||||||
|
return URG_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
/* we use proxy all right, but we wanna know the remote port for SSL
|
/* we use proxy all right, but we wanna know the remote port for SSL
|
||||||
reasons */
|
reasons */
|
||||||
tmp = strchr(name, ':');
|
tmp = strchr(name, ':');
|
||||||
|
@ -1032,13 +1044,13 @@ static UrgError _urlget(struct UrlData *data)
|
||||||
ignored. */
|
ignored. */
|
||||||
|
|
||||||
/* 1. skip the protocol part if present */
|
/* 1. skip the protocol part if present */
|
||||||
endofprot=strstr(data->proxy, "://");
|
endofprot=strstr(proxyptr, "://");
|
||||||
if(endofprot) {
|
if(endofprot) {
|
||||||
data->proxy = endofprot+3;
|
proxyptr = endofprot+3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* allow user to specify proxy.server.com:1080 if desired */
|
/* allow user to specify proxy.server.com:1080 if desired */
|
||||||
prox_portno = strchr (data->proxy, ':');
|
prox_portno = strchr (proxyptr, ':');
|
||||||
if (prox_portno) {
|
if (prox_portno) {
|
||||||
*prox_portno = 0x0; /* cut off number from host name */
|
*prox_portno = 0x0; /* cut off number from host name */
|
||||||
prox_portno ++;
|
prox_portno ++;
|
||||||
|
@ -1047,10 +1059,12 @@ static UrgError _urlget(struct UrlData *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* connect to proxy */
|
/* connect to proxy */
|
||||||
if(!(hp = GetHost(data, data->proxy))) {
|
if(!(hp = GetHost(data, proxyptr))) {
|
||||||
failf(data, "Couldn't resolv proxy '%s'", data->proxy);
|
failf(data, "Couldn't resolv proxy '%s'", proxyptr);
|
||||||
return URG_COULDNT_RESOLVE_PROXY;
|
return URG_COULDNT_RESOLVE_PROXY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(proxydup); /* free the duplicate pointer and not the modified */
|
||||||
}
|
}
|
||||||
pgrsTime(data, TIMER_NAMELOOKUP);
|
pgrsTime(data, TIMER_NAMELOOKUP);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue