download: catch exceptions checking for size

Happens on at least one windows box
This commit is contained in:
moneromooo-monero 2019-11-25 21:49:36 +00:00
parent fe3f6a3e6b
commit 3813a992e4
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3

View file

@ -107,13 +107,17 @@ namespace tools
MINFO("Content-Length: " << length); MINFO("Content-Length: " << length);
content_length = length; content_length = length;
boost::filesystem::path path(control->path); boost::filesystem::path path(control->path);
boost::filesystem::space_info si = boost::filesystem::space(path); try
if (si.available < (size_t)content_length)
{ {
const uint64_t avail = (si.available + 1023) / 1024, needed = (content_length + 1023) / 1024; boost::filesystem::space_info si = boost::filesystem::space(path);
MERROR("Not enough space to download " << needed << " kB to " << path << " (" << avail << " kB available)"); if (si.available < (size_t)content_length)
return false; {
const uint64_t avail = (si.available + 1023) / 1024, needed = (content_length + 1023) / 1024;
MERROR("Not enough space to download " << needed << " kB to " << path << " (" << avail << " kB available)");
return false;
}
} }
catch (const std::exception &e) { MWARNING("Failed to check for free space: " << e.what()); }
} }
if (offset > 0) if (offset > 0)
{ {