fix: allow malformed magnet links to be added (#2410)

This commit is contained in:
Charles Kerr 2022-01-16 09:28:18 -06:00 committed by GitHub
parent c9f8f150ea
commit be1e46383d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 3 deletions

View File

@ -301,14 +301,25 @@ std::optional<tr_url_parsed_t> tr_urlParse(std::string_view url)
{
url = tr_strvStrip(url);
auto parsed = tr_url_parsed_t{};
parsed.full = url;
// So many magnet links are malformed, e.g. not escaping text
// in the display name, that we're better off handling magnets
// as a special case before even scanning for invalid chars.
auto constexpr MagnetStart = "magnet:?"sv;
if (tr_strvStartsWith(url, MagnetStart))
{
parsed.scheme = "magnet"sv;
parsed.query = url.substr(std::size(MagnetStart));
return parsed;
}
if (!urlCharsAreValid(url))
{
return std::nullopt;
}
auto parsed = tr_url_parsed_t{};
parsed.full = url;
// scheme
parsed.scheme = tr_strvSep(&url, ':');
if (std::empty(parsed.scheme))