diff --git a/lib/downloader.cpp b/lib/downloader.cpp index 8c07c2e2..346c3673 100644 --- a/lib/downloader.cpp +++ b/lib/downloader.cpp @@ -331,7 +331,7 @@ namespace HTTP{ } // No data? Wait for a second or so. - if (!getSocket().spool()){ + if (!getSocket().spool() && getSocket()){ if (progressCallback != 0){ if (!progressCallback()){ WARN_MSG("Download aborted by callback"); diff --git a/test/downloader.cpp b/test/downloader.cpp index 0085980e..c0ad0817 100644 --- a/test/downloader.cpp +++ b/test/downloader.cpp @@ -1,14 +1,22 @@ #include "../lib/downloader.cpp" #include + +class CB : public Util::DataCallback { + virtual void dataCallback(const char *ptr, size_t size){ + std::cout.write(ptr, size); + } +}; +CB callback; + int main(int argc, char **argv){ if (argc < 2){ std::cout << "Usage: " << argv[0] << " URL" << std::endl; return 1; } HTTP::Downloader d; - if (d.get(argv[1])){ - std::cout << d.data() << std::endl; + HTTP::URL url(argv[1]); + if (d.get(url, 10, callback)){ std::cerr << "Download success!" << std::endl; }else{ std::cerr << "Download fail!" << std::endl;