mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-04-01 18:25:30 +00:00
WIP: udp: add ipv6 support
Returning IPv6 peers doesn't really work with UDP. It is not supported by https://libtorrent.org/udp_tracker_protocol.html. There is a suggestion in https://web.archive.org/web/20170503181830/http://opentracker.blog.h3q.com/2007/12/28/the-ipv6-situation/ of using action number 4 and returning IPv6 octets just like for IPv4 addresses. Clients seem not to support it very well, but due to a lack of alternative solutions, it is implemented here
This commit is contained in:
parent
bdb6aced1c
commit
a3a1d1606b
8 changed files with 230 additions and 111 deletions
|
|
@ -18,7 +18,17 @@ pub fn clean_connections_and_torrents(state: &State){
|
|||
::std::mem::drop(connections);
|
||||
|
||||
let mut torrents = state.torrents.lock();
|
||||
|
||||
clean_torrent_map(&mut torrents.ipv4, now);
|
||||
clean_torrent_map(&mut torrents.ipv6, now);
|
||||
}
|
||||
|
||||
|
||||
#[inline]
|
||||
fn clean_torrent_map<I: Ip>(
|
||||
torrents: &mut TorrentMap<I>,
|
||||
now: Instant,
|
||||
){
|
||||
torrents.retain(|_, torrent| {
|
||||
let num_seeders = &mut torrent.num_seeders;
|
||||
let num_leechers = &mut torrent.num_leechers;
|
||||
|
|
@ -93,7 +103,14 @@ pub fn gather_and_print_statistics(
|
|||
|
||||
let torrents = &mut state.torrents.lock();
|
||||
|
||||
for torrent in torrents.values(){
|
||||
for torrent in torrents.ipv4.values(){
|
||||
let num_peers = (torrent.num_seeders + torrent.num_leechers) as u64;
|
||||
|
||||
if let Err(err) = peers_per_torrent.increment(num_peers){
|
||||
eprintln!("error incrementing peers_per_torrent histogram: {}", err)
|
||||
}
|
||||
}
|
||||
for torrent in torrents.ipv6.values(){
|
||||
let num_peers = (torrent.num_seeders + torrent.num_leechers) as u64;
|
||||
|
||||
if let Err(err) = peers_per_torrent.increment(num_peers){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue