mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
corrected memory leaks when re-using connections
This commit is contained in:
parent
a1d6ad2610
commit
46e0937263
12
lib/http.c
12
lib/http.c
@ -421,6 +421,8 @@ CURLcode Curl_http(struct connectdata *conn)
|
|||||||
sprintf(data->buffer, "%s:%s", data->user, data->passwd);
|
sprintf(data->buffer, "%s:%s", data->user, data->passwd);
|
||||||
if(Curl_base64_encode(data->buffer, strlen(data->buffer),
|
if(Curl_base64_encode(data->buffer, strlen(data->buffer),
|
||||||
&authorization) >= 0) {
|
&authorization) >= 0) {
|
||||||
|
if(data->ptr_userpwd)
|
||||||
|
free(data->ptr_userpwd);
|
||||||
data->ptr_userpwd = aprintf( "Authorization: Basic %s\015\012",
|
data->ptr_userpwd = aprintf( "Authorization: Basic %s\015\012",
|
||||||
authorization);
|
authorization);
|
||||||
free(authorization);
|
free(authorization);
|
||||||
@ -428,9 +430,13 @@ CURLcode Curl_http(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if((data->bits.http_set_referer) && !checkheaders(data, "Referer:")) {
|
if((data->bits.http_set_referer) && !checkheaders(data, "Referer:")) {
|
||||||
|
if(data->ptr_ref)
|
||||||
|
free(data->ptr_ref);
|
||||||
data->ptr_ref = aprintf("Referer: %s\015\012", data->referer);
|
data->ptr_ref = aprintf("Referer: %s\015\012", data->referer);
|
||||||
}
|
}
|
||||||
if(data->cookie && !checkheaders(data, "Cookie:")) {
|
if(data->cookie && !checkheaders(data, "Cookie:")) {
|
||||||
|
if(data->ptr_cookie)
|
||||||
|
free(data->ptr_cookie);
|
||||||
data->ptr_cookie = aprintf("Cookie: %s\015\012", data->cookie);
|
data->ptr_cookie = aprintf("Cookie: %s\015\012", data->cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -450,7 +456,11 @@ CURLcode Curl_http(struct connectdata *conn)
|
|||||||
http->sendit = Curl_getFormData(data->httppost, &http->postsize);
|
http->sendit = Curl_getFormData(data->httppost, &http->postsize);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!checkheaders(data, "Host:")) {
|
if(!checkheaders(data, "Host:") &&
|
||||||
|
!data->ptr_host) {
|
||||||
|
/* if ptr_host is already set, it is OK since we only re-use connections
|
||||||
|
to the very same host and port */
|
||||||
|
|
||||||
if(((conn->protocol&PROT_HTTPS) && (data->remote_port == PORT_HTTPS)) ||
|
if(((conn->protocol&PROT_HTTPS) && (data->remote_port == PORT_HTTPS)) ||
|
||||||
(!(conn->protocol&PROT_HTTPS) && (data->remote_port == PORT_HTTP)) )
|
(!(conn->protocol&PROT_HTTPS) && (data->remote_port == PORT_HTTP)) )
|
||||||
/* If (HTTPS on port 443) OR (non-HTTPS on port 80) then don't include
|
/* If (HTTPS on port 443) OR (non-HTTPS on port 80) then don't include
|
||||||
|
@ -1653,6 +1653,8 @@ static CURLcode _connect(CURL *curl, CURLconnect **in_connect)
|
|||||||
data->proxyuser, data->proxypasswd);
|
data->proxyuser, data->proxypasswd);
|
||||||
if(Curl_base64_encode(data->buffer, strlen(data->buffer),
|
if(Curl_base64_encode(data->buffer, strlen(data->buffer),
|
||||||
&authorization) >= 0) {
|
&authorization) >= 0) {
|
||||||
|
if(data->ptr_proxyuserpwd)
|
||||||
|
free(data->ptr_proxyuserpwd);
|
||||||
data->ptr_proxyuserpwd =
|
data->ptr_proxyuserpwd =
|
||||||
aprintf("Proxy-authorization: Basic %s\015\012", authorization);
|
aprintf("Proxy-authorization: Basic %s\015\012", authorization);
|
||||||
free(authorization);
|
free(authorization);
|
||||||
@ -1665,6 +1667,8 @@ static CURLcode _connect(CURL *curl, CURLconnect **in_connect)
|
|||||||
*************************************************************/
|
*************************************************************/
|
||||||
if((conn->protocol&PROT_HTTP) || data->bits.httpproxy) {
|
if((conn->protocol&PROT_HTTP) || data->bits.httpproxy) {
|
||||||
if(data->useragent) {
|
if(data->useragent) {
|
||||||
|
if(data->ptr_uagent)
|
||||||
|
free(data->ptr_uagent);
|
||||||
data->ptr_uagent =
|
data->ptr_uagent =
|
||||||
aprintf("User-Agent: %s\015\012", data->useragent);
|
aprintf("User-Agent: %s\015\012", data->useragent);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user