Improved checks for bad memory situations and proper behaviour when we

run out of memory.
This commit is contained in:
Daniel Stenberg 2003-10-24 12:58:29 +00:00
parent 017a78d0c5
commit 7247041e21

View File

@ -591,7 +591,6 @@ CURLcode add_buffer_send(send_buffer *in,
static
CURLcode add_bufferf(send_buffer *in, const char *fmt, ...)
{
CURLcode result = CURLE_OUT_OF_MEMORY;
char *s;
va_list ap;
va_start(ap, fmt);
@ -599,10 +598,16 @@ CURLcode add_bufferf(send_buffer *in, const char *fmt, ...)
va_end(ap);
if(s) {
result = add_buffer(in, s, strlen(s));
CURLcode result = add_buffer(in, s, strlen(s));
free(s);
if(CURLE_OK == result)
return CURLE_OK;
}
return result;
/* If we failed, we cleanup the whole buffer and return error */
if(in->buffer)
free(in->buffer);
free(in);
return CURLE_OUT_OF_MEMORY;
}
/*
@ -1152,6 +1157,10 @@ CURLcode Curl_http(struct connectdata *conn)
host,
conn->bits.ipv6_ip?"]":"",
conn->remote_port);
if(!conn->allocptr.host)
/* without Host: we can't make a nice request */
return CURLE_OUT_OF_MEMORY;
}
if(data->cookies) {
@ -1290,7 +1299,11 @@ CURLcode Curl_http(struct connectdata *conn)
/* initialize a dynamic send-buffer */
req_buffer = add_buffer_init();
if(!req_buffer)
return CURLE_OUT_OF_MEMORY;
/* add the main request stuff */
result =
add_bufferf(req_buffer,
"%s " /* GET/HEAD/POST/PUT */
"%s HTTP/%s\r\n" /* path + HTTP version */
@ -1326,6 +1339,9 @@ CURLcode Curl_http(struct connectdata *conn)
te
);
if(result)
return result;
if(co) {
int count=0;
struct Cookie *store=co;