aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-01-24 13:15:24 +0100
committerEelco Dolstra <edolstra@gmail.com>2017-01-24 13:57:01 +0100
commite3bf228c927eb9eafc0fab813ec8477731cfdb92 (patch)
treed2a6761652858021fd8f8fe72d812e990b1f16e8
parent3b4a15bd4827fa9cb128055776ba782d07e9c258 (diff)
Enable verbose curl output
Closes #1182.
-rw-r--r--src/libstore/download.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 42873d9e8..8030e83b0 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -172,6 +172,13 @@ struct CurlDownloader : public Downloader
return ((DownloadItem *) userp)->progressCallback(dltotal, dlnow);
}
+ static int debugCallback(CURL * handle, curl_infotype type, char * data, size_t size, void * userptr)
+ {
+ if (type == CURLINFO_TEXT)
+ vomit("curl: %s", chomp(std::string(data, size)));
+ return 0;
+ }
+
void init()
{
// FIXME: handle parallel downloads.
@@ -184,6 +191,12 @@ struct CurlDownloader : public Downloader
if (!req) req = curl_easy_init();
curl_easy_reset(req);
+
+ if (verbosity >= lvlVomit) {
+ curl_easy_setopt(req, CURLOPT_VERBOSE, 1);
+ curl_easy_setopt(req, CURLOPT_DEBUGFUNCTION, DownloadItem::debugCallback);
+ }
+
curl_easy_setopt(req, CURLOPT_URL, request.uri.c_str());
curl_easy_setopt(req, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(req, CURLOPT_NOSIGNAL, 1);
@@ -387,7 +400,7 @@ struct CurlDownloader : public Downloader
nextWakeup != std::chrono::steady_clock::time_point()
? std::max(0, (int) std::chrono::duration_cast<std::chrono::milliseconds>(nextWakeup - std::chrono::steady_clock::now()).count())
: 1000000000;
- //printMsg(lvlVomit, format("download thread waiting for %d ms") % sleepTimeMs);
+ vomit("download thread waiting for %d ms", sleepTimeMs);
mc = curl_multi_wait(curlm, extraFDs, 1, sleepTimeMs, &numfds);
if (mc != CURLM_OK)
throw nix::Error(format("unexpected error from curl_multi_wait(): %s") % curl_multi_strerror(mc));