X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_http.cc;h=ba028d6f002e2ef9b18b7851b59ca1723a7114b5;hb=1c94f6490e3f0bd4b35a001a9a530cee752100b0;hp=3ffea61b33013647fa8097663677b8794fef8b69;hpb=c9959f742acc731360649abc8c15da9e044b931e;p=ardour.git diff --git a/gtk2_ardour/ardour_http.cc b/gtk2_ardour/ardour_http.cc index 3ffea61b33..ba028d6f00 100644 --- a/gtk2_ardour/ardour_http.cc +++ b/gtk2_ardour/ardour_http.cc @@ -105,6 +105,22 @@ WriteMemoryCallback (void *ptr, size_t size, size_t nmemb, void *data) { return realsize; } +static size_t headerCallback (char* ptr, size_t size, size_t nmemb, void* data) +{ + size_t realsize = size * nmemb; + struct HttpGet::HeaderInfo *nfo = (struct HttpGet::HeaderInfo*)data; + std::string header (static_cast(ptr), realsize); + std::string::size_type index = header.find (':', 0); + if (index != std::string::npos) { + std::string k = header.substr (0, index); + std::string v = header.substr (index + 2); + k.erase(k.find_last_not_of (" \n\r\t")+1); + v.erase(v.find_last_not_of (" \n\r\t")+1); + nfo->h[k] = v; + } + + return realsize; +} HttpGet::HttpGet (bool p, bool ssl) : persist (p) @@ -116,6 +132,8 @@ HttpGet::HttpGet (bool p, bool ssl) curl_easy_setopt (_curl, CURLOPT_WRITEDATA, (void *)&mem); curl_easy_setopt (_curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); + curl_easy_setopt (_curl, CURLOPT_HEADERDATA, (void *)&nfo); + curl_easy_setopt (_curl, CURLOPT_HEADERFUNCTION, headerCallback); curl_easy_setopt (_curl, CURLOPT_USERAGENT, PROGRAM_NAME VERSIONSTRING); curl_easy_setopt (_curl, CURLOPT_TIMEOUT, ARDOUR_CURL_TIMEOUT); curl_easy_setopt (_curl, CURLOPT_NOSIGNAL, 1);