2
0
mirror of synced 2025-02-23 06:08:07 +00:00

Expose Peer.Network to replace Peer.RemoteAddr.Network

This commit is contained in:
Matt Joiner 2021-01-25 15:43:28 +11:00
parent 9f9953be52
commit b5215ea7e8
5 changed files with 20 additions and 17 deletions

View File

@ -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,

View 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.

View 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},
},
}

View 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()

View 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,