mirror of
https://github.com/curl/curl.git
synced 2025-01-18 14:04:30 +08:00
Fixed out of memory problems that caused torture test failures in tests
1021 and 1067.
This commit is contained in:
parent
fc09d10560
commit
4b01dfe369
4
CHANGES
4
CHANGES
@ -6,6 +6,10 @@
|
|||||||
|
|
||||||
Changelog
|
Changelog
|
||||||
|
|
||||||
|
Daniel Fandrich (26 Aug 2008)
|
||||||
|
- Fixed out of memory problems that caused torture test failures in tests
|
||||||
|
1021 and 1067.
|
||||||
|
|
||||||
Yang Tse (26 Aug 2008)
|
Yang Tse (26 Aug 2008)
|
||||||
- Added check and symbol definition for WIN32 file API usage in configure,
|
- Added check and symbol definition for WIN32 file API usage in configure,
|
||||||
supporting configure's --disable-largefile option for WIN32 targets also.
|
supporting configure's --disable-largefile option for WIN32 targets also.
|
||||||
|
@ -552,7 +552,7 @@ CURLcode Curl_store_ip_addr(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Used within the multi interface. Try next IP address, return TRUE if no
|
/* Used within the multi interface. Try next IP address, return TRUE if no
|
||||||
more address exists */
|
more address exists or error */
|
||||||
static bool trynextip(struct connectdata *conn,
|
static bool trynextip(struct connectdata *conn,
|
||||||
int sockindex,
|
int sockindex,
|
||||||
bool *connected)
|
bool *connected)
|
||||||
@ -578,8 +578,7 @@ static bool trynextip(struct connectdata *conn,
|
|||||||
conn->sock[sockindex] = sockfd;
|
conn->sock[sockindex] = sockfd;
|
||||||
conn->ip_addr = ai;
|
conn->ip_addr = ai;
|
||||||
|
|
||||||
Curl_store_ip_addr(conn);
|
return Curl_store_ip_addr(conn) != CURLE_OK;
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
ai = ai->ai_next;
|
ai = ai->ai_next;
|
||||||
}
|
}
|
||||||
@ -919,6 +918,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
long timeout_ms;
|
long timeout_ms;
|
||||||
long timeout_per_addr;
|
long timeout_per_addr;
|
||||||
|
|
||||||
|
DEBUGASSERT(sockconn);
|
||||||
*connected = FALSE; /* default to not connected */
|
*connected = FALSE; /* default to not connected */
|
||||||
|
|
||||||
/* get the timeout left */
|
/* get the timeout left */
|
||||||
@ -967,9 +967,10 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
before = after;
|
before = after;
|
||||||
} /* end of connect-to-each-address loop */
|
} /* end of connect-to-each-address loop */
|
||||||
|
|
||||||
|
*sockconn = sockfd; /* the socket descriptor we've connected */
|
||||||
|
|
||||||
if(sockfd == CURL_SOCKET_BAD) {
|
if(sockfd == CURL_SOCKET_BAD) {
|
||||||
/* no good connect was made */
|
/* no good connect was made */
|
||||||
*sockconn = CURL_SOCKET_BAD;
|
|
||||||
failf(data, "couldn't connect to host");
|
failf(data, "couldn't connect to host");
|
||||||
return CURLE_COULDNT_CONNECT;
|
return CURLE_COULDNT_CONNECT;
|
||||||
}
|
}
|
||||||
@ -980,10 +981,6 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
if(addr)
|
if(addr)
|
||||||
*addr = curr_addr;
|
*addr = curr_addr;
|
||||||
|
|
||||||
/* allow NULL-pointers to get passed in */
|
|
||||||
if(sockconn)
|
|
||||||
*sockconn = sockfd; /* the socket descriptor we've connected */
|
|
||||||
|
|
||||||
data->info.numconnects++; /* to track the number of connections made */
|
data->info.numconnects++; /* to track the number of connections made */
|
||||||
|
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
|
@ -2182,6 +2182,10 @@ CURLcode Curl_follow(struct SessionHandle *data,
|
|||||||
free(data->change.referer);
|
free(data->change.referer);
|
||||||
|
|
||||||
data->change.referer = strdup(data->change.url);
|
data->change.referer = strdup(data->change.url);
|
||||||
|
if (!data->change.referer) {
|
||||||
|
data->change.referer_alloc = FALSE;
|
||||||
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
data->change.referer_alloc = TRUE; /* yes, free this later */
|
data->change.referer_alloc = TRUE; /* yes, free this later */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2206,6 +2206,12 @@ CURLcode Curl_disconnect(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Cleanup possible redirect junk */
|
||||||
|
if(data->req.newurl) {
|
||||||
|
free(data->req.newurl);
|
||||||
|
data->req.newurl = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if(conn->handler->disconnect)
|
if(conn->handler->disconnect)
|
||||||
/* This is set if protocol-specific cleanups should be made */
|
/* This is set if protocol-specific cleanups should be made */
|
||||||
conn->handler->disconnect(conn);
|
conn->handler->disconnect(conn);
|
||||||
@ -4483,7 +4489,7 @@ static CURLcode setup_conn(struct connectdata *conn,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return CURLE_OK;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
CURLcode Curl_connect(struct SessionHandle *data,
|
CURLcode Curl_connect(struct SessionHandle *data,
|
||||||
|
Loading…
Reference in New Issue
Block a user