client.go | 18 +++++++++++++++--- global.go | 4 ---- misc.go | 9 +++++++++ diff --git a/client.go b/client.go index deb09a3f4649302876d3955d92c3e52f77d21fed..6e8a7c20653bcb1a9cb2598bd6ec910ed0683be3 100644 --- a/client.go +++ b/client.go @@ -441,9 +441,18 @@ // routine just fucked off. return } if utp { - acceptUTP.Add(1) + torrent.Add("accepted utp connections", 1) + } else { + 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 { - acceptTCP.Add(1) + 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 @@ if reject { 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 @@ } 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 } diff --git a/global.go b/global.go index cab312080c08063156bdc8914916c7a6504103c8..cdd0351386673f7c6790c7df038c5760ebcd8485 100644 --- a/global.go +++ b/global.go @@ -37,10 +37,6 @@ 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. diff --git a/misc.go b/misc.go index f3b38bf3666440ce3124d69b033829caf7df85c0..9c618d9ac1c391fd49344ba00798da05596c3750 100644 --- a/misc.go +++ b/misc.go @@ -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 @@ return string(v4), nil } 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 +}