diff --git a/platform/http_request.cpp b/platform/http_request.cpp index 9b4dcc48adf..b9adf31573b 100644 --- a/platform/http_request.cpp +++ b/platform/http_request.cpp @@ -396,22 +396,6 @@ HttpRequest * HttpRequest::PostJson(string const & url, string const & postData, return new MemoryHttpRequest(url, postData, onFinish, onProgress); } -namespace -{ - class ErrorHttpRequest : public HttpRequest - { - string m_filePath; - public: - ErrorHttpRequest(string const & filePath) - : HttpRequest(CallbackT(), CallbackT()), m_filePath(filePath) - { - m_status = EFailed; - } - - virtual string const & Data() const { return m_filePath; } - }; -} - HttpRequest * HttpRequest::GetFile(vector const & urls, string const & filePath, int64_t fileSize, CallbackT const & onFinish, CallbackT const & onProgress, @@ -425,13 +409,8 @@ HttpRequest * HttpRequest::GetFile(vector const & urls, { // Can't create or open file for writing. LOG(LWARNING, ("Can't create file", filePath, "with size", fileSize, e.Msg())); - - // Mark the end of download with error. - ErrorHttpRequest error(filePath); - onFinish(error); - - return 0; } + return nullptr; } } // namespace downloader diff --git a/storage/http_map_files_downloader.cpp b/storage/http_map_files_downloader.cpp index fa4b08f7691..2c039792764 100644 --- a/storage/http_map_files_downloader.cpp +++ b/storage/http_map_files_downloader.cpp @@ -8,6 +8,22 @@ #include "std/bind.hpp" #include "base/string_utils.hpp" +namespace +{ +class ErrorHttpRequest : public downloader::HttpRequest +{ + string m_filePath; +public: + ErrorHttpRequest(string const & filePath) + : HttpRequest(CallbackT(), CallbackT()), m_filePath(filePath) + { + m_status = EFailed; + } + + virtual string const & Data() const { return m_filePath; } +}; +} // anonymous namespace + namespace storage { HttpMapFilesDownloader::~HttpMapFilesDownloader() @@ -33,6 +49,13 @@ void HttpMapFilesDownloader::DownloadMapFile(vector const & urls, string m_request.reset(downloader::HttpRequest::GetFile( urls, path, size, bind(&HttpMapFilesDownloader::OnMapFileDownloaded, this, onDownloaded, _1), bind(&HttpMapFilesDownloader::OnMapFileDownloadingProgress, this, onProgress, _1))); + + if (!m_request) + { + // Mark the end of download with error. + ErrorHttpRequest error(path); + OnMapFileDownloaded(onDownloaded, error); + } } MapFilesDownloader::TProgress HttpMapFilesDownloader::GetDownloadingProgress()