#define BUFFER_SIZE 102400L
-/* When doing serial transfers, we use a single fixed error area */
-static char global_errorbuffer[CURL_ERROR_SIZE];
-
#ifdef IP_TOS
static int get_address_family(curl_socket_t sockfd)
{
my_setopt_str(curl, CURLOPT_LOGIN_OPTIONS, config->login_options);
my_setopt_str(curl, CURLOPT_USERPWD, config->userpwd);
my_setopt_str(curl, CURLOPT_RANGE, config->range);
- if(!global->parallel) {
- per->errorbuffer = global_errorbuffer;
- my_setopt(curl, CURLOPT_ERRORBUFFER, global_errorbuffer);
- }
+ my_setopt(curl, CURLOPT_ERRORBUFFER, per->errorbuffer);
my_setopt_long(curl, CURLOPT_TIMEOUT_MS, config->timeout_ms);
switch(config->httpreq) {
(!global->silent || global->showerror)) {
const char *msg = per->errorbuffer;
fprintf(tool_stderr, "curl: (%d) %s\n", result,
- (msg && msg[0]) ? msg : curl_easy_strerror(result));
+ msg[0] ? msg : curl_easy_strerror(result));
if(result == CURLE_PEER_FAILED_VERIFICATION)
fputs(CURL_CA_CERT_ERRORMSG, tool_stderr);
}
free(per->url);
free(per->outfile);
free(per->uploadfile);
- if(global->parallel)
- free(per->errorbuffer);
curl_slist_free_all(per->hdrcbdata.headlist);
per->hdrcbdata.headlist = NULL;
return result;
CURLcode result = CURLE_OK;
CURLMcode mcode;
bool sleeping = FALSE;
- char *errorbuf;
curl_off_t nxfers;
*addedp = FALSE;
if(result)
return result;
- errorbuf = malloc(CURL_ERROR_SIZE);
- if(!errorbuf)
- return CURLE_OUT_OF_MEMORY;
-
/* parallel connect means that we do not set PIPEWAIT since pipewait
will make libcurl prefer multiplexing */
(void)curl_easy_setopt(per->curl, CURLOPT_PIPEWAIT,
(void)curl_easy_setopt(per->curl, CURLOPT_XFERINFOFUNCTION, xferinfo_cb);
(void)curl_easy_setopt(per->curl, CURLOPT_XFERINFODATA, per);
(void)curl_easy_setopt(per->curl, CURLOPT_NOPROGRESS, 0L);
+ (void)curl_easy_setopt(per->curl, CURLOPT_ERRORBUFFER, per->errorbuffer);
#ifdef DEBUGBUILD
if(getenv("CURL_FORBID_REUSE"))
(void)curl_easy_setopt(per->curl, CURLOPT_FORBID_REUSE, 1L);
break;
} while(skipped);
}
- if(result) {
- free(errorbuf);
+ if(result)
return result;
- }
- errorbuf[0] = 0;
- (void)curl_easy_setopt(per->curl, CURLOPT_ERRORBUFFER, errorbuf);
- per->errorbuffer = errorbuf;
+
+ per->errorbuffer[0] = 0;
per->added = TRUE;
all_added++;
*addedp = TRUE;
curl_easy_getinfo(easy, CURLINFO_PRIVATE, (void *)&ended);
curl_multi_remove_handle(s->multi, easy);
- if(ended->abort && (tres == CURLE_ABORTED_BY_CALLBACK) &&
- ended->errorbuffer) {
+ if(ended->abort && (tres == CURLE_ABORTED_BY_CALLBACK)) {
msnprintf(ended->errorbuffer, CURL_ERROR_SIZE,
"Transfer aborted due to critical error "
"in another transfer");