diff --git a/src/ccurl_thread.cc b/src/ccurl_thread.cc index 52c9a6d4..53c2d403 100644 --- a/src/ccurl_thread.cc +++ b/src/ccurl_thread.cc @@ -113,16 +113,30 @@ void ccurl_fetch_data(thread_handle &handle, const ccurl_location_ptr &curloc) curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, ccurl_write_memory_callback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *) &chunk); curl_easy_setopt(curl, CURLOPT_USERAGENT, "conky-curl/1.0"); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); res = curl_easy_perform(curl); if (res == CURLE_OK && chunk.size) { long http_status_code; - if(curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_status_code) == CURLE_OK && http_status_code == 200) { - std::lock_guard lock(handle.mutex()); - curloc->process_function(curloc->result, chunk.memory); + if (curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, + &http_status_code) == CURLE_OK) { + switch (http_status_code) { + case 200: + { + std::lock_guard lock(handle.mutex()); + curloc->process_function(curloc->result, chunk.memory); + } + break; + case 304: + break; + default: + NORM_ERR("curl: no data from server, got HTTP status %d %s", + http_status_code); + break; + } } else { - NORM_ERR("curl: no data from server"); + NORM_ERR("curl: no HTTP status from server"); } free(chunk.memory); } else {