in sdk/src/http/CurlHttpClient.cc [305:331]
static size_t recvHeaders(char *buffer, size_t size, size_t nitems, void *userdata)
{
TransferState *state = static_cast<TransferState*>(userdata);
const size_t length = nitems * size;
std::string line(buffer);
auto pos = line.find(':');
if (pos != line.npos)
{
size_t posEnd = line.rfind('\r');
if (posEnd != line.npos) {
posEnd = posEnd - pos - 2;
}
std::string name = line.substr(0, pos);
std::string value = line.substr(pos + 2, posEnd);
state->response->setHeader(name, value);
}
if (length == 2 && (buffer[0] == 0x0D) && (buffer[1] == 0x0A)) {
if (state->response->hasHeader(Http::CONTENT_LENGTH)) {
double dval;
curl_easy_getinfo(state->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &dval);
state->total = (int64_t)dval;
}
}
return length;
}