make url_random take a span
This commit is contained in:
parent
a01274ce2c
commit
785fffd976
|
@ -78,6 +78,11 @@ namespace aux {
|
||||||
span(std::array<U, N>& arr) noexcept // NOLINT
|
span(std::array<U, N>& arr) noexcept // NOLINT
|
||||||
: m_ptr(arr.data()), m_len(arr.size()) {}
|
: m_ptr(arr.data()), m_len(arr.size()) {}
|
||||||
|
|
||||||
|
// this is necessary until C++17, where data() returns a non-const pointer
|
||||||
|
template <typename U>
|
||||||
|
span(std::basic_string<U>& str) noexcept // NOLINT
|
||||||
|
: m_ptr(&str[0]), m_len(str.size()) {}
|
||||||
|
|
||||||
template <typename U, std::size_t N>
|
template <typename U, std::size_t N>
|
||||||
span(U (&arr)[N]) noexcept // NOLINT
|
span(U (&arr)[N]) noexcept // NOLINT
|
||||||
: m_ptr(&arr[0]), m_len(N) {}
|
: m_ptr(&arr[0]), m_len(N) {}
|
||||||
|
|
|
@ -68,7 +68,7 @@ namespace libtorrent {
|
||||||
TORRENT_EXTRA_EXPORT bool string_begins_no_case(char const* s1, char const* s2);
|
TORRENT_EXTRA_EXPORT bool string_begins_no_case(char const* s1, char const* s2);
|
||||||
TORRENT_EXTRA_EXPORT bool string_equal_no_case(string_view s1, string_view s2);
|
TORRENT_EXTRA_EXPORT bool string_equal_no_case(string_view s1, string_view s2);
|
||||||
|
|
||||||
TORRENT_EXTRA_EXPORT void url_random(char* begin, char* end);
|
TORRENT_EXTRA_EXPORT void url_random(span<char> dest);
|
||||||
|
|
||||||
TORRENT_EXTRA_EXPORT bool string_ends_with(string_view s1, string_view s2);
|
TORRENT_EXTRA_EXPORT bool string_ends_with(string_view s1, string_view s2);
|
||||||
|
|
||||||
|
|
|
@ -1072,7 +1072,7 @@ namespace {
|
||||||
ret.upload_limit = 0xf0f0f0f;
|
ret.upload_limit = 0xf0f0f0f;
|
||||||
ret.download_limit = 0xf0f0f0f;
|
ret.download_limit = 0xf0f0f0f;
|
||||||
ret.label.resize(20);
|
ret.label.resize(20);
|
||||||
url_random(&ret.label[0], &ret.label[0] + 20);
|
url_random(span<char>(ret.label));
|
||||||
ret.ignore_unchoke_slots = false;
|
ret.ignore_unchoke_slots = false;
|
||||||
ret.connection_limit_factor = 0xf0f0f0f;
|
ret.connection_limit_factor = 0xf0f0f0f;
|
||||||
ret.upload_priority = 0xf0f0f0f;
|
ret.upload_priority = 0xf0f0f0f;
|
||||||
|
@ -5349,13 +5349,13 @@ namespace {
|
||||||
{
|
{
|
||||||
// ---- generate a peer id ----
|
// ---- generate a peer id ----
|
||||||
std::string print = m_settings.get_str(settings_pack::peer_fingerprint);
|
std::string print = m_settings.get_str(settings_pack::peer_fingerprint);
|
||||||
if (print.size() > 20) print.resize(20);
|
if (print.size() > m_peer_id.size()) print.resize(m_peer_id.size());
|
||||||
|
|
||||||
// the client's fingerprint
|
// the client's fingerprint
|
||||||
std::copy(print.begin(), print.begin() + int(print.length()), m_peer_id.begin());
|
std::copy(print.begin(), print.begin() + int(print.length()), m_peer_id.begin());
|
||||||
if (print.length() < 20)
|
if (print.size() < m_peer_id.size())
|
||||||
{
|
{
|
||||||
url_random(m_peer_id.data() + print.length(), m_peer_id.data() + 20);
|
url_random(span<char>(m_peer_id).subspan(print.length()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6395,7 +6395,7 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_upnp) m_upnp->set_user_agent("");
|
if (m_upnp) m_upnp->set_user_agent("");
|
||||||
url_random(m_peer_id.data(), m_peer_id.data() + 20);
|
url_random(m_peer_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::update_force_proxy()
|
void session_impl::update_force_proxy()
|
||||||
|
|
|
@ -129,7 +129,7 @@ namespace libtorrent {
|
||||||
}
|
}
|
||||||
|
|
||||||
// generate a url-safe random string
|
// generate a url-safe random string
|
||||||
void url_random(char* begin, char* end)
|
void url_random(span<char> dest)
|
||||||
{
|
{
|
||||||
// http-accepted characters:
|
// http-accepted characters:
|
||||||
// excluding ', since some buggy trackers don't support that
|
// excluding ', since some buggy trackers don't support that
|
||||||
|
@ -137,8 +137,8 @@ namespace libtorrent {
|
||||||
"abcdefghijklmnopqrstuvwxyz-_.!~*()";
|
"abcdefghijklmnopqrstuvwxyz-_.!~*()";
|
||||||
|
|
||||||
// the random number
|
// the random number
|
||||||
while (begin != end)
|
for (char& c : dest)
|
||||||
*begin++ = printable[random(sizeof(printable) - 2)];
|
c = printable[random(sizeof(printable) - 2)];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool string_ends_with(string_view s1, string_view s2)
|
bool string_ends_with(string_view s1, string_view s2)
|
||||||
|
|
Loading…
Reference in New Issue