IPv6 only tracker fix
This commit is contained in:
parent
643be6c44b
commit
37cbdb331e
|
@ -49,6 +49,8 @@ release 0.14.3
|
||||||
* fixed missing include in enum_if.cpp
|
* fixed missing include in enum_if.cpp
|
||||||
* fixed dual IP stack issue
|
* fixed dual IP stack issue
|
||||||
* fixed issue where renamed files were sometimes not saved in resume data
|
* fixed issue where renamed files were sometimes not saved in resume data
|
||||||
|
* accepts tracker responses with no 'peers' field, as long as 'peers6'
|
||||||
|
is present
|
||||||
|
|
||||||
release 0.14.2
|
release 0.14.2
|
||||||
|
|
||||||
|
|
|
@ -393,13 +393,7 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
|
|
||||||
entry const* peers_ent = e.find_key("peers");
|
entry const* peers_ent = e.find_key("peers");
|
||||||
if (peers_ent == 0)
|
if (peers_ent && peers_ent->type() == entry::string_t)
|
||||||
{
|
|
||||||
fail(-1, "missing 'peers' entry in tracker response");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (peers_ent->type() == entry::string_t)
|
|
||||||
{
|
{
|
||||||
std::string const& peers = peers_ent->string();
|
std::string const& peers = peers_ent->string();
|
||||||
for (std::string::const_iterator i = peers.begin();
|
for (std::string::const_iterator i = peers.begin();
|
||||||
|
@ -416,7 +410,7 @@ namespace libtorrent
|
||||||
peer_list.push_back(p);
|
peer_list.push_back(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (peers_ent->type() == entry::list_t)
|
else if (peers_ent && peers_ent->type() == entry::list_t)
|
||||||
{
|
{
|
||||||
entry::list_type const& l = peers_ent->list();
|
entry::list_type const& l = peers_ent->list();
|
||||||
for(entry::list_type::const_iterator i = l.begin(); i != l.end(); ++i)
|
for(entry::list_type::const_iterator i = l.begin(); i != l.end(); ++i)
|
||||||
|
@ -428,8 +422,7 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fail(-1, "invalid 'peers' entry in tracker response");
|
peers_ent = 0;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
entry const* ipv6_peers = e.find_key("peers6");
|
entry const* ipv6_peers = e.find_key("peers6");
|
||||||
|
@ -450,6 +443,17 @@ namespace libtorrent
|
||||||
peer_list.push_back(p);
|
peer_list.push_back(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ipv6_peers = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (peers_ent == 0 && ipv6_peers == 0)
|
||||||
|
{
|
||||||
|
fail(-1, "missing 'peers' and 'peers6' entry in tracker response");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// look for optional scrape info
|
// look for optional scrape info
|
||||||
int complete = -1;
|
int complete = -1;
|
||||||
|
|
Loading…
Reference in New Issue