Charles Kerr 2021-11-25 18:14:25 -06:00 committed by GitHub
parent 74f367c150
commit dc36787378
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 23 deletions

View File

@ -1530,7 +1530,12 @@ static void gotNewBlocklist(
stream.opaque = (voidpf)Z_NULL;
stream.next_in = reinterpret_cast<Bytef const*>(std::data(response));
stream.avail_in = std::size(response);
inflateInit2(&stream, windowBits);
if (inflateInit2(&stream, windowBits) != Z_OK)
{
// If stream init fails, log an error but keep going forward
// since the file may be uncompressed anyway.
tr_logAddError("inflateInit2 failed: %s", stream.msg ? stream.msg : "unknown");
}
auto filename = tr_strvPath(configDir, "blocklist.tmp.XXXXXX");
tr_sys_file_t const fd = tr_sys_file_open_temp(std::data(filename), &error);

View File

@ -753,7 +753,6 @@ static void torrentInit(tr_torrent* tor, tr_ctor const* ctor)
tor->session = session;
tor->uniqueId = nextUniqueId++;
tor->magicNumber = TORRENT_MAGIC_NUMBER;
tor->queuePosition = tr_sessionCountTorrents(session);
tor->dnd_pieces_ = tr_bitfield{ tor->info.pieceCount };

View File

@ -357,7 +357,8 @@ public:
tr_swarm* swarm = nullptr;
int magicNumber;
// TODO: is this actually still needed?
int const magicNumber = MagicNumber;
std::optional<double> verify_progress;
@ -420,7 +421,7 @@ public:
uint64_t uploadedCur = 0;
uint64_t uploadedPrev = 0;
uint64_t corruptCur = 0;
uint64_t corruptPrev;
uint64_t corruptPrev = 0;
uint64_t etaDLSpeedCalculatedAt = 0;
uint64_t etaULSpeedCalculatedAt = 0;
@ -490,6 +491,8 @@ public:
tr_labels_t labels;
static auto constexpr MagicNumber = int{ 95549 };
private:
mutable std::vector<tr_sha1_digest_t> piece_checksums_;
};
@ -534,14 +537,9 @@ constexpr bool tr_torrentAllowsLPD(tr_torrent const* tor)
****
***/
enum
{
TORRENT_MAGIC_NUMBER = 95549
};
constexpr bool tr_isTorrent(tr_torrent const* tor)
{
return tor != nullptr && tor->magicNumber == TORRENT_MAGIC_NUMBER && tr_isSession(tor->session);
return tor != nullptr && tor->magicNumber == tr_torrent::MagicNumber && tr_isSession(tor->session);
}
/* set a flag indicating that the torrent's .resume file

View File

@ -526,8 +526,6 @@ static void jsonStringFunc(tr_variant const* val, void* vdata)
auto sv = std::string_view{};
(void)!tr_variantGetStrView(val, &sv);
auto const* it = reinterpret_cast<unsigned char const*>(std::data(sv));
auto const* const end = it + std::size(sv);
evbuffer_reserve_space(data->out, std::size(sv) * 4, vec, 1);
auto* out = static_cast<char*>(vec[0].iov_base);
@ -536,9 +534,9 @@ static void jsonStringFunc(tr_variant const* val, void* vdata)
char* outwalk = out;
*outwalk++ = '"';
for (; it != end; ++it)
for (; !std::empty(sv); sv.remove_prefix(1))
{
switch (*it)
switch (sv.front())
{
case '\b':
*outwalk++ = '\\';
@ -576,21 +574,23 @@ static void jsonStringFunc(tr_variant const* val, void* vdata)
break;
default:
if (isprint(*it))
if (isprint(sv.front()))
{
*outwalk++ = *it;
*outwalk++ = sv.front();
}
else
{
UTF8 const* tmp = it;
auto const* const begin = reinterpret_cast<UTF8 const*>(std::data(sv));
auto const* tmp = begin;
auto const* end = tmp + std::size(sv);
UTF32 buf[1] = { 0 };
UTF32* u32 = buf;
ConversionResult result = ConvertUTF8toUTF32(&tmp, end, &u32, buf + 1, {});
if ((result == conversionOK || result == targetExhausted) && tmp != it)
if ((result == conversionOK || result == targetExhausted) && tmp != begin)
{
outwalk += tr_snprintf(outwalk, outend - outwalk, "\\u%04x", (unsigned int)buf[0]);
it = tmp - 1;
sv.remove_prefix(tmp - begin - 1);
}
}

View File

@ -276,23 +276,23 @@ static CURL* createEasy(tr_session* s, struct tr_web* web, struct tr_web_task* t
tr_address const* addr = tr_sessionGetPublicAddress(s, TR_AF_INET, &is_default_value);
if (addr != nullptr && !is_default_value)
{
curl_easy_setopt(e, CURLOPT_INTERFACE, tr_address_to_string(addr));
(void)curl_easy_setopt(e, CURLOPT_INTERFACE, tr_address_to_string(addr));
}
addr = tr_sessionGetPublicAddress(s, TR_AF_INET6, &is_default_value);
if (addr != nullptr && !is_default_value)
{
curl_easy_setopt(e, CURLOPT_INTERFACE, tr_address_to_string(addr));
(void)curl_easy_setopt(e, CURLOPT_INTERFACE, tr_address_to_string(addr));
}
if (!std::empty(task->cookies))
{
curl_easy_setopt(e, CURLOPT_COOKIE, task->cookies.c_str());
(void)curl_easy_setopt(e, CURLOPT_COOKIE, task->cookies.c_str());
}
if (web->cookie_filename != nullptr)
{
curl_easy_setopt(e, CURLOPT_COOKIEFILE, web->cookie_filename);
(void)curl_easy_setopt(e, CURLOPT_COOKIEFILE, web->cookie_filename);
}
if (!std::empty(task->range))