summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2015-09-26 10:54:16 +0100
committerTim Angus <tim@ngus.net>2016-04-07 11:12:31 +0100
commitbbd6e0b9bb8d952198c43c24ee90fd5fe73aaeca (patch)
tree2d8eba0f907e33232cea55c294022f564505146b
parent360299211844847b652e4d4c27f0b2d5141b0aaa (diff)
Now with less infinite recursion
-rw-r--r--src/client/cl_curl.c54
1 files changed, 40 insertions, 14 deletions
diff --git a/src/client/cl_curl.c b/src/client/cl_curl.c
index 1570885b..166fb1dc 100644
--- a/src/client/cl_curl.c
+++ b/src/client/cl_curl.c
@@ -218,6 +218,32 @@ static size_t CL_cURL_CallbackWrite(void *buffer, size_t size, size_t nmemb,
return size*nmemb;
}
+CURLcode qcurl_easy_setopt_warn(CURL *curl, CURLoption option, ...)
+{
+ CURLcode result;
+
+ va_list argp;
+ va_start(argp, option);
+
+ if(option < CURLOPTTYPE_OBJECTPOINT) {
+ long longValue = va_arg(argp, long);
+ result = qcurl_easy_setopt(curl, option, longValue);
+ } else if(option < CURLOPTTYPE_OFF_T) {
+ void *pointerValue = va_arg(argp, void *);
+ result = qcurl_easy_setopt(curl, option, pointerValue);
+ } else {
+ curl_off_t offsetValue = va_arg(argp, curl_off_t);
+ result = qcurl_easy_setopt(curl, option, offsetValue);
+ }
+
+ if(result != CURLE_OK) {
+ Com_DPrintf("qcurl_easy_setopt failed: %s\n", qcurl_easy_strerror(result));
+ }
+ va_end(argp);
+
+ return result;
+}
+
void CL_cURL_BeginDownload( const char *localName, const char *remoteURL )
{
CURLMcode result;
@@ -257,23 +283,23 @@ void CL_cURL_BeginDownload( const char *localName, const char *remoteURL )
}
if(com_developer->integer)
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_VERBOSE, 1);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_URL, clc.downloadURL);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_TRANSFERTEXT, 0);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_REFERER,
- va("Tremulous://%s", NET_AdrToString(clc.serverAddress)));
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_USERAGENT, va("%s %s",
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_VERBOSE, 1);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_URL, clc.downloadURL);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_TRANSFERTEXT, 0);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_REFERER,
+ va("Tremulous://%s", NET_AdrToString(clc.serverAddress)));
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_USERAGENT, va("%s %s",
Q3_VERSION, qcurl_version()));
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_WRITEFUNCTION,
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_WRITEFUNCTION,
CL_cURL_CallbackWrite);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_WRITEDATA, &clc.download);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_NOPROGRESS, 0);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_PROGRESSFUNCTION,
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_WRITEDATA, &clc.download);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_NOPROGRESS, 0);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_PROGRESSFUNCTION,
CL_cURL_CallbackProgress);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_PROGRESSDATA, NULL);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_FAILONERROR, 1);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_FOLLOWLOCATION, 1);
- qcurl_easy_setopt(clc.downloadCURL, CURLOPT_MAXREDIRS, 5);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_PROGRESSDATA, NULL);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_FAILONERROR, 1);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_FOLLOWLOCATION, 1);
+ qcurl_easy_setopt_warn(clc.downloadCURL, CURLOPT_MAXREDIRS, 5);
clc.downloadCURLM = qcurl_multi_init();
if(!clc.downloadCURLM) {
qcurl_easy_cleanup(clc.downloadCURL);