diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-01-24T12·15+0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-01-24T12·57+0100 |
commit | e3bf228c927eb9eafc0fab813ec8477731cfdb92 (patch) | |
tree | d2a6761652858021fd8f8fe72d812e990b1f16e8 /src/libstore | |
parent | 3b4a15bd4827fa9cb128055776ba782d07e9c258 (diff) |
Enable verbose curl output
Closes #1182.
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/download.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc index 42873d9e8a10..8030e83b0dd5 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)); |