From 9d0ea150445aa5ecb1f8ab8b3c1176a95a0b03f6 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 15 Jul 2020 16:15:38 +1000 Subject: [PATCH] Expose peer.RemoteAddr --- client.go | 8 ++++---- peerconn.go | 16 ++++++++-------- peerconn_test.go | 16 ++++++++-------- pex_test.go | 12 ++++++------ torrent.go | 4 ++-- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/client.go b/client.go index 69ef1ef5d3..dff94a1d27 100644 --- a/client.go +++ b/client.go @@ -881,7 +881,7 @@ func (cl *Client) runReceivedConn(c *PeerConn) { ).Log(cl.logger) torrent.Add("error receiving handshake", 1) cl.lock() - cl.onBadAccept(c.remoteAddr) + cl.onBadAccept(c.RemoteAddr) cl.unlock() return } @@ -889,7 +889,7 @@ func (cl *Client) runReceivedConn(c *PeerConn) { torrent.Add("received handshake for unloaded torrent", 1) log.Fmsg("received handshake for unloaded torrent").SetLevel(log.Debug).Log(cl.logger) cl.lock() - cl.onBadAccept(c.remoteAddr) + cl.onBadAccept(c.RemoteAddr) cl.unlock() return } @@ -946,7 +946,7 @@ func (cl *Client) sendInitialMessages(conn *PeerConn, torrent *Torrent) { }, V: cl.config.ExtendedHandshakeClientVersion, Reqq: 64, // TODO: Really? - YourIp: pp.CompactIp(addrIpOrNil(conn.remoteAddr)), + YourIp: pp.CompactIp(addrIpOrNil(conn.RemoteAddr)), Encryption: cl.config.HeaderObfuscationPolicy.Preferred || !cl.config.HeaderObfuscationPolicy.RequirePreferred, Port: cl.incomingPeerPort(), MetadataSize: torrent.metadataSize(), @@ -1336,7 +1336,7 @@ func (cl *Client) newConnection(nc net.Conn, outgoing bool, remoteAddr net.Addr, peerChoking: true, PeerMaxRequests: 250, - remoteAddr: remoteAddr, + RemoteAddr: remoteAddr, network: network, connString: connString, }, diff --git a/peerconn.go b/peerconn.go index aff37ff9c0..85443ee271 100644 --- a/peerconn.go +++ b/peerconn.go @@ -47,7 +47,7 @@ type peer struct { connString string outgoing bool network string - remoteAddr net.Addr + RemoteAddr net.Addr // True if the connection is operating over MSE obfuscation. headerEncrypted bool cryptoMethod mse.CryptoMethod @@ -151,7 +151,7 @@ func (cn *peer) expectingChunks() bool { // Returns true if the connection is over IPv6. func (cn *PeerConn) ipv6() bool { - ip := addrIpOrNil(cn.remoteAddr) + ip := addrIpOrNil(cn.RemoteAddr) if ip.To4() != nil { return false } @@ -1119,7 +1119,7 @@ func (c *PeerConn) mainReadLoop() (err error) { req := newRequestFromMessage(&msg) c.onPeerSentCancel(req) case pp.Port: - ipa, ok := tryIpPortFromNetAddr(c.remoteAddr) + ipa, ok := tryIpPortFromNetAddr(c.RemoteAddr) if !ok { break } @@ -1549,11 +1549,11 @@ func (c *peer) peerPriority() (peerPriority, error) { } func (c *peer) remoteIp() net.IP { - return addrIpOrNil(c.remoteAddr) + return addrIpOrNil(c.RemoteAddr) } func (c *peer) remoteIpPort() IpPort { - ipa, _ := tryIpPortFromNetAddr(c.remoteAddr) + ipa, _ := tryIpPortFromNetAddr(c.RemoteAddr) return IpPort{ipa.IP, uint16(ipa.Port)} } @@ -1565,7 +1565,7 @@ func (c *PeerConn) pexPeerFlags() pp.PexPeerFlags { if c.outgoing { f |= pp.PexOutgoingConn } - if c.remoteAddr != nil && strings.Contains(c.remoteAddr.Network(), "udp") { + if c.RemoteAddr != nil && strings.Contains(c.RemoteAddr.Network(), "udp") { f |= pp.PexSupportsUtp } return f @@ -1573,7 +1573,7 @@ func (c *PeerConn) pexPeerFlags() pp.PexPeerFlags { func (c *PeerConn) dialAddr() net.Addr { if !c.outgoing && c.PeerListenPort != 0 { - switch addr := c.remoteAddr.(type) { + switch addr := c.RemoteAddr.(type) { case *net.TCPAddr: dialAddr := *addr dialAddr.Port = c.PeerListenPort @@ -1584,7 +1584,7 @@ func (c *PeerConn) dialAddr() net.Addr { return &dialAddr } } - return c.remoteAddr + return c.RemoteAddr } func (c *PeerConn) pexEvent(t pexEventType) pexEvent { diff --git a/peerconn_test.go b/peerconn_test.go index 7ad4c41a64..23dedc3f18 100644 --- a/peerconn_test.go +++ b/peerconn_test.go @@ -159,10 +159,10 @@ func TestConnPexPeerFlags(t *testing.T) { {&PeerConn{peer: peer{outgoing: false, PeerPrefersEncryption: true}}, pp.PexPrefersEncryption}, {&PeerConn{peer: peer{outgoing: true, PeerPrefersEncryption: false}}, pp.PexOutgoingConn}, {&PeerConn{peer: peer{outgoing: true, PeerPrefersEncryption: true}}, pp.PexOutgoingConn | pp.PexPrefersEncryption}, - {&PeerConn{peer: peer{remoteAddr: udpAddr}}, pp.PexSupportsUtp}, - {&PeerConn{peer: peer{remoteAddr: udpAddr, outgoing: true}}, pp.PexOutgoingConn | pp.PexSupportsUtp}, - {&PeerConn{peer: peer{remoteAddr: tcpAddr, outgoing: true}}, pp.PexOutgoingConn}, - {&PeerConn{peer: peer{remoteAddr: tcpAddr}}, 0}, + {&PeerConn{peer: peer{RemoteAddr: udpAddr}}, pp.PexSupportsUtp}, + {&PeerConn{peer: peer{RemoteAddr: udpAddr, outgoing: true}}, pp.PexOutgoingConn | pp.PexSupportsUtp}, + {&PeerConn{peer: peer{RemoteAddr: tcpAddr, outgoing: true}}, pp.PexOutgoingConn}, + {&PeerConn{peer: peer{RemoteAddr: tcpAddr}}, 0}, } for i, tc := range testcases { f := tc.conn.pexPeerFlags() @@ -184,22 +184,22 @@ func TestConnPexEvent(t *testing.T) { }{ { pexAdd, - &PeerConn{peer: peer{remoteAddr: udpAddr}}, + &PeerConn{peer: peer{RemoteAddr: udpAddr}}, pexEvent{pexAdd, udpAddr, pp.PexSupportsUtp}, }, { pexDrop, - &PeerConn{peer: peer{remoteAddr: tcpAddr, outgoing: true, PeerListenPort: dialTcpAddr.Port}}, + &PeerConn{peer: peer{RemoteAddr: tcpAddr, outgoing: true, PeerListenPort: dialTcpAddr.Port}}, pexEvent{pexDrop, tcpAddr, pp.PexOutgoingConn}, }, { pexAdd, - &PeerConn{peer: peer{remoteAddr: tcpAddr, PeerListenPort: dialTcpAddr.Port}}, + &PeerConn{peer: peer{RemoteAddr: tcpAddr, PeerListenPort: dialTcpAddr.Port}}, pexEvent{pexAdd, dialTcpAddr, 0}, }, { pexDrop, - &PeerConn{peer: peer{remoteAddr: udpAddr, PeerListenPort: dialUdpAddr.Port}}, + &PeerConn{peer: peer{RemoteAddr: udpAddr, PeerListenPort: dialUdpAddr.Port}}, pexEvent{pexDrop, dialUdpAddr, pp.PexSupportsUtp}, }, } diff --git a/pex_test.go b/pex_test.go index 828883c444..72d97a64ae 100644 --- a/pex_test.go +++ b/pex_test.go @@ -23,7 +23,7 @@ var ( func TestPexAdded(t *testing.T) { t.Run("noHold", func(t *testing.T) { s := new(pexState) - s.Add(&PeerConn{peer: peer{remoteAddr: addrs[0], outgoing: true}}) + s.Add(&PeerConn{peer: peer{RemoteAddr: addrs[0], outgoing: true}}) targ := &pexState{ ev: []pexEvent{ pexEvent{pexAdd, addrs[0], pp.PexOutgoingConn}, @@ -39,7 +39,7 @@ func TestPexAdded(t *testing.T) { }, nc: 0, } - s.Add(&PeerConn{peer: peer{remoteAddr: addrs[0]}}) + s.Add(&PeerConn{peer: peer{RemoteAddr: addrs[0]}}) targ := &pexState{ hold: []pexEvent{ pexEvent{pexDrop, addrs[1], 0}, @@ -59,7 +59,7 @@ func TestPexAdded(t *testing.T) { }, nc: pexTargAdded, } - s.Add(&PeerConn{peer: peer{remoteAddr: addrs[0]}}) + s.Add(&PeerConn{peer: peer{RemoteAddr: addrs[0]}}) targ := &pexState{ hold: []pexEvent{}, ev: []pexEvent{ @@ -75,7 +75,7 @@ func TestPexAdded(t *testing.T) { func TestPexDropped(t *testing.T) { t.Run("belowTarg", func(t *testing.T) { s := &pexState{nc: 1} - s.Drop(&PeerConn{peer: peer{remoteAddr: addrs[0], pex: pexConnState{Listed: true}}}) + s.Drop(&PeerConn{peer: peer{RemoteAddr: addrs[0], pex: pexConnState{Listed: true}}}) targ := &pexState{ hold: []pexEvent{pexEvent{pexDrop, addrs[0], 0}}, nc: 0, @@ -84,7 +84,7 @@ func TestPexDropped(t *testing.T) { }) t.Run("aboveTarg", func(t *testing.T) { s := &pexState{nc: pexTargAdded + 1} - s.Drop(&PeerConn{peer: peer{remoteAddr: addrs[0], pex: pexConnState{Listed: true}}}) + s.Drop(&PeerConn{peer: peer{RemoteAddr: addrs[0], pex: pexConnState{Listed: true}}}) targ := &pexState{ ev: []pexEvent{pexEvent{pexDrop, addrs[0], 0}}, nc: pexTargAdded, @@ -93,7 +93,7 @@ func TestPexDropped(t *testing.T) { }) t.Run("aboveTargNotListed", func(t *testing.T) { s := &pexState{nc: pexTargAdded + 1} - s.Drop(&PeerConn{peer: peer{remoteAddr: addrs[0], pex: pexConnState{Listed: false}}}) + s.Drop(&PeerConn{peer: peer{RemoteAddr: addrs[0], pex: pexConnState{Listed: false}}}) targ := &pexState{nc: pexTargAdded + 1} require.EqualValues(t, targ, s) }) diff --git a/torrent.go b/torrent.go index 322ee230f5..493d7e7fa3 100644 --- a/torrent.go +++ b/torrent.go @@ -206,7 +206,7 @@ func (t *Torrent) KnownSwarm() (ks []PeerInfo) { ks = append(ks, PeerInfo{ Id: conn.PeerID, - Addr: conn.remoteAddr, + Addr: conn.RemoteAddr, Source: conn.Discovery, // > If the connection is encrypted, that's certainly enough to set SupportsEncryption. // > But if we're not connected to them with an encrypted connection, I couldn't say @@ -245,7 +245,7 @@ func (t *Torrent) addrActive(addr string) bool { return true } for c := range t.conns { - ra := c.remoteAddr + ra := c.RemoteAddr if ra.String() == addr { return true }