cmFileCommand: Do not log raw protocol data from curl (#15589)

Teach cmFileCommandCurlDebugCallback to filter the debug data by type
and show only summary information instead of the raw data.  This avoids
allocating memory for all data transferred by UPLOAD or DOWNLOAD.
This commit is contained in:
Brad King 2015-05-28 10:54:39 -04:00
parent 7e10f1691f
commit eba12a4361
1 changed files with 26 additions and 3 deletions

View File

@ -2798,13 +2798,36 @@ namespace {
static size_t
cmFileCommandCurlDebugCallback(CURL *, curl_infotype, char *chPtr,
cmFileCommandCurlDebugCallback(CURL *, curl_infotype type, char *chPtr,
size_t size, void *data)
{
cmFileCommandVectorOfChar *vec
= static_cast<cmFileCommandVectorOfChar*>(data);
vec->insert(vec->end(), chPtr, chPtr + size);
return size;
switch(type)
{
case CURLINFO_TEXT:
case CURLINFO_HEADER_IN:
case CURLINFO_HEADER_OUT:
vec->insert(vec->end(), chPtr, chPtr + size);
break;
case CURLINFO_DATA_IN:
case CURLINFO_DATA_OUT:
case CURLINFO_SSL_DATA_IN:
case CURLINFO_SSL_DATA_OUT:
{
char buf[128];
int n = sprintf(buf, "[%" cmIML_INT_PRIu64 " bytes data]\n",
static_cast<cmIML_INT_uint64_t>(size));
if (n > 0)
{
vec->insert(vec->end(), buf, buf + n);
}
}
break;
default:
break;
}
return 0;
}