Try to count IPv6 connections

This commit is contained in:
Matt Joiner 2018-02-13 00:48:21 +11:00
parent 4b5203851a
commit 39bde7237e
3 changed files with 24 additions and 7 deletions

View File

@ -441,9 +441,18 @@ func (cl *Client) acceptConnections(l net.Listener, utp bool) {
return
}
if utp {
acceptUTP.Add(1)
torrent.Add("accepted utp connections", 1)
} else {
acceptTCP.Add(1)
torrent.Add("accepted tcp connections", 1)
}
torrent.Add(fmt.Sprintf("accepted conn with network %q", conn.RemoteAddr().Network()), 1)
remoteIP := missinggo.AddrIP(conn.RemoteAddr())
if remoteIP.To4() != nil {
torrent.Add("accepted conn from ipv4 address", 1)
} else if remoteIP.To16() != nil {
torrent.Add("accepted conn from ipv6 address", 1)
} else {
torrent.Add("accepted conn from unknown ip address type", 1)
}
if cl.config.Debug {
log.Printf("accepted connection from %s", conn.RemoteAddr())
@ -455,7 +464,7 @@ func (cl *Client) acceptConnections(l net.Listener, utp bool) {
if cl.config.Debug {
log.Printf("rejecting connection from %s", conn.RemoteAddr())
}
acceptReject.Add(1)
torrent.Add("rejected accepted connection", 1)
conn.Close()
continue
}
@ -831,6 +840,9 @@ func (cl *Client) runHandshookConn(c *connection, t *Torrent, outgoing bool) {
c.conn.SetWriteDeadline(time.Time{})
c.r = deadlineReader{c.conn, c.r}
completedHandshakeConnectionFlags.Add(c.connectionFlags(), 1)
if connIsIpv6(c.conn) {
torrent.Add("completed handshake over ipv6", 1)
}
if !t.addConnection(c, outgoing) {
return
}

View File

@ -37,10 +37,6 @@ var (
unsuccessfulDials = expvar.NewInt("dialSuccessful")
successfulDials = expvar.NewInt("dialUnsuccessful")
acceptUTP = expvar.NewInt("acceptUTP")
acceptTCP = expvar.NewInt("acceptTCP")
acceptReject = expvar.NewInt("acceptReject")
peerExtensions = expvar.NewMap("peerExtensions")
completedHandshakeConnectionFlags = expvar.NewMap("completedHandshakeConnectionFlags")
// Count of connections to peer with same client ID.

View File

@ -2,8 +2,10 @@ package torrent
import (
"errors"
"log"
"net"
"github.com/anacrolix/missinggo"
"github.com/anacrolix/torrent/metainfo"
pp "github.com/anacrolix/torrent/peer_protocol"
)
@ -123,3 +125,10 @@ func addrCompactIP(addr net.Addr) (string, error) {
}
return string(ip.To16()), nil
}
func connIsIpv6(nc net.Conn) bool {
ra := nc.RemoteAddr()
log.Printf("network: %q, string: %q", ra.Network(), ra.String())
rip := missinggo.AddrIP(ra)
return rip.To4() == nil && rip.To16() != nil
}