]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Expose Peer.Network to replace Peer.RemoteAddr.Network
authorMatt Joiner <anacrolix@gmail.com>
Mon, 25 Jan 2021 04:43:28 +0000 (15:43 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 25 Jan 2021 04:49:48 +0000 (15:49 +1100)
client.go
peerconn.go
peerconn_test.go
pexconn_test.go
torrent.go

index bda89c6f695cbddd027712720e7e829cc6afa905..e66d1022ec931b1466c1ccb9adc370faa9840b13 100644 (file)
--- a/client.go
+++ b/client.go
@@ -895,7 +895,7 @@ func (cl *Client) runReceivedConn(c *PeerConn) {
                        "error receiving handshakes on %v: %s", c, err,
                ).SetLevel(log.Debug).
                        Add(
-                               "network", c.network,
+                               "network", c.Network,
                        ).Log(cl.logger)
                torrent.Add("error receiving handshake", 1)
                cl.lock()
@@ -1368,6 +1368,9 @@ func (cl *Client) banPeerIP(ip net.IP) {
 }
 
 func (cl *Client) newConnection(nc net.Conn, outgoing bool, remoteAddr PeerRemoteAddr, network, connString string) (c *PeerConn) {
+       if network == "" {
+               panic(remoteAddr)
+       }
        c = &PeerConn{
                Peer: Peer{
                        outgoing:        outgoing,
@@ -1376,7 +1379,7 @@ func (cl *Client) newConnection(nc net.Conn, outgoing bool, remoteAddr PeerRemot
                        PeerMaxRequests: 250,
 
                        RemoteAddr: remoteAddr,
-                       network:    network,
+                       Network:    network,
                },
                connString:  connString,
                conn:        nc,
index 73ac8de63df6bdf973e83e979163146c4c658b69..b5ff73f247f6a6880f8ff7cb62b22d3c8b53ca86 100644 (file)
@@ -55,7 +55,7 @@ type Peer struct {
        peerImpl
 
        outgoing   bool
-       network    string
+       Network    string
        RemoteAddr PeerRemoteAddr
        // True if the connection is operating over MSE obfuscation.
        headerEncrypted bool
@@ -275,7 +275,7 @@ func (cn *PeerConn) connectionFlags() (ret string) {
 }
 
 func (cn *PeerConn) utp() bool {
-       return parseNetworkString(cn.network).Udp
+       return parseNetworkString(cn.Network).Udp
 }
 
 // Inspired by https://github.com/transmission/transmission/wiki/Peer-Status-Text.
index a65710894eb38992a67ca1b4aee41008cc30b5b7..5fbc565a5284fe3a40df16b6065f08f72b3a8889 100644 (file)
@@ -24,13 +24,13 @@ func TestSendBitfieldThenHave(t *testing.T) {
                config: TestingConfig(),
        }
        cl.initLogger()
-       c := cl.newConnection(nil, false, nil, "", "")
+       c := cl.newConnection(nil, false, nil, "io.Pipe", "")
        c.setTorrent(cl.newTorrent(metainfo.Hash{}, nil))
        c.t.setInfo(&metainfo.Info{
                Pieces: make([]byte, metainfo.HashSize*3),
        })
        r, w := io.Pipe()
-       c.r = r
+       //c.r = r
        c.w = w
        go c.writer(time.Minute)
        c.locker().Lock()
@@ -109,7 +109,7 @@ func BenchmarkConnectionMainReadLoop(b *testing.B) {
        t.setChunkSize(defaultChunkSize)
        t._pendingPieces.Set(0, PiecePriorityNormal.BitmapPriority())
        r, w := net.Pipe()
-       cn := cl.newConnection(r, true, nil, "", "")
+       cn := cl.newConnection(r, true, r.RemoteAddr(), r.RemoteAddr().Network(), regularNetConnPeerConnConnString(r))
        cn.setTorrent(t)
        mrlErr := make(chan error)
        msg := pp.Message{
@@ -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, network: udpAddr.Network()}}, pp.PexSupportsUtp},
-               {&PeerConn{Peer: Peer{RemoteAddr: udpAddr, network: udpAddr.Network(), outgoing: true}}, pp.PexOutgoingConn | pp.PexSupportsUtp},
-               {&PeerConn{Peer: Peer{RemoteAddr: tcpAddr, network: tcpAddr.Network(), outgoing: true}}, pp.PexOutgoingConn},
-               {&PeerConn{Peer: Peer{RemoteAddr: tcpAddr, network: tcpAddr.Network()}}, 0},
+               {&PeerConn{Peer: Peer{RemoteAddr: udpAddr, Network: udpAddr.Network()}}, pp.PexSupportsUtp},
+               {&PeerConn{Peer: Peer{RemoteAddr: udpAddr, Network: udpAddr.Network(), outgoing: true}}, pp.PexOutgoingConn | pp.PexSupportsUtp},
+               {&PeerConn{Peer: Peer{RemoteAddr: tcpAddr, Network: tcpAddr.Network(), outgoing: true}}, pp.PexOutgoingConn},
+               {&PeerConn{Peer: Peer{RemoteAddr: tcpAddr, Network: tcpAddr.Network()}}, 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, network: udpAddr.Network()}},
+                       &PeerConn{Peer: Peer{RemoteAddr: udpAddr, Network: udpAddr.Network()}},
                        pexEvent{pexAdd, udpAddr, pp.PexSupportsUtp},
                },
                {
                        pexDrop,
-                       &PeerConn{Peer: Peer{RemoteAddr: tcpAddr, network: tcpAddr.Network(), outgoing: true, PeerListenPort: dialTcpAddr.Port}},
+                       &PeerConn{Peer: Peer{RemoteAddr: tcpAddr, Network: tcpAddr.Network(), outgoing: true, PeerListenPort: dialTcpAddr.Port}},
                        pexEvent{pexDrop, tcpAddr, pp.PexOutgoingConn},
                },
                {
                        pexAdd,
-                       &PeerConn{Peer: Peer{RemoteAddr: tcpAddr, network: tcpAddr.Network(), PeerListenPort: dialTcpAddr.Port}},
+                       &PeerConn{Peer: Peer{RemoteAddr: tcpAddr, Network: tcpAddr.Network(), PeerListenPort: dialTcpAddr.Port}},
                        pexEvent{pexAdd, dialTcpAddr, 0},
                },
                {
                        pexDrop,
-                       &PeerConn{Peer: Peer{RemoteAddr: udpAddr, network: udpAddr.Network(), PeerListenPort: dialUdpAddr.Port}},
+                       &PeerConn{Peer: Peer{RemoteAddr: udpAddr, Network: udpAddr.Network(), PeerListenPort: dialUdpAddr.Port}},
                        pexEvent{pexDrop, dialUdpAddr, pp.PexSupportsUtp},
                },
        }
index 868936f3ddcc00a0782057ba784257cca1410d8e..609e088eee0dd21d1d877614497ef8e32112dc7b 100644 (file)
@@ -18,7 +18,7 @@ func TestPexConnState(t *testing.T) {
        cl.initLogger()
        torrent := cl.newTorrent(metainfo.Hash{}, nil)
        addr := &net.TCPAddr{IP: net.IPv6loopback, Port: 4747}
-       c := cl.newConnection(nil, false, addr, "", "")
+       c := cl.newConnection(nil, false, addr, addr.Network(), "")
        c.PeerExtensionIDs = make(map[pp.ExtensionName]pp.ExtensionNumber)
        c.PeerExtensionIDs[pp.ExtensionNamePex] = pexExtendedId
        c.writerCond.L.Lock()
index 0cfe31f0777deb3e5ac9587c5fe6aada7ddc563f..9e36778baf107b5d69f3662ca2814df53c646e8f 100644 (file)
@@ -2110,7 +2110,7 @@ func (t *Torrent) addWebSeed(url string) {
                peer: Peer{
                        t:                        t,
                        outgoing:                 true,
-                       network:                  "http",
+                       Network:                  "http",
                        reconciledHandshakeStats: true,
                        peerSentHaveAll:          true,
                        PeerMaxRequests:          maxRequests,