OSDN Git Service

edit the remoteAddr
authorpaladz <453256728@qq.com>
Thu, 24 May 2018 10:31:51 +0000 (18:31 +0800)
committerpaladz <453256728@qq.com>
Thu, 24 May 2018 10:31:51 +0000 (18:31 +0800)
p2p/node_info.go
p2p/peer.go
p2p/pex/pex_reactor.go
p2p/switch.go

index 5d586c3..a6ba162 100644 (file)
@@ -17,6 +17,7 @@ type NodeInfo struct {
        Moniker    string               `json:"moniker"`
        Network    string               `json:"network"`
        ListenAddr string               `json:"listen_addr"`
+       RemoteAddr string               `json:"remote_addr"`
        Version    string               `json:"version"` // major.minor.revision
        Other      []string             `json:"other"`   // other application specific data
 }
index e445ad0..d1e6331 100644 (file)
@@ -160,7 +160,7 @@ func (pc *peerConn) HandshakeTimeout(ourNodeInfo *NodeInfo, timeout time.Duratio
 
        // Remove deadline
        pc.conn.SetDeadline(time.Time{})
-
+       peerNodeInfo.RemoteAddr = pc.conn.RemoteAddr().String()
        return peerNodeInfo, nil
 }
 
index 95a33df..3ddaca6 100644 (file)
@@ -98,7 +98,7 @@ func (r *PEXReactor) AddPeer(p *p2p.Peer) error {
 
 // Receive implements Reactor by handling incoming PEX messages.
 func (r *PEXReactor) Receive(chID byte, p *p2p.Peer, rawMsg []byte) {
-       addrStr := p.Addr().String()
+       addrStr := p.RemoteAddr
        r.incrementMsgCount(addrStr)
        if r.reachedMaxMsgLimit(addrStr) {
                log.WithField("peer", addrStr).Error("reached the max pex messages limit")
@@ -224,7 +224,7 @@ func (r *PEXReactor) ensurePeers() {
 
        connectedPeers := make(map[string]struct{})
        for _, peer := range r.Switch.Peers().List() {
-               connectedPeers[peer.Addr().String()] = struct{}{}
+               connectedPeers[peer.RemoteAddr] = struct{}{}
        }
 
        for i := 0; i < maxAttempts && len(toDial) < numToDial; i++ {
index 816d37b..d125f3b 100644 (file)
@@ -201,7 +201,7 @@ func (sw *Switch) OnStop() {
 func (sw *Switch) AddPeer(pc *peerConn) error {
        peerNodeInfo, err := pc.HandshakeTimeout(sw.nodeInfo, time.Duration(sw.peerConfig.HandshakeTimeout*time.Second))
        if err != nil {
-               return ErrConnectBannedPeer
+               return err
        }
        // Check version, chain id
        if err := sw.nodeInfo.CompatibleWith(peerNodeInfo); err != nil {
@@ -277,7 +277,7 @@ func (sw *Switch) filterConnByIP(ip string) error {
 }
 
 func (sw *Switch) filterConnByPeer(peer *Peer) error {
-       if err := sw.checkBannedPeer(peer.Addr().String()); err != nil {
+       if err := sw.checkBannedPeer(peer.RemoteAddr); err != nil {
                return ErrConnectBannedPeer
        }
 
@@ -407,7 +407,7 @@ func (sw *Switch) addPeerWithConnection(conn net.Conn) error {
 func (sw *Switch) AddBannedPeer(peer *Peer) error {
        sw.mtx.Lock()
        defer sw.mtx.Unlock()
-       key := peer.Addr().String()
+       key := peer.RemoteAddr
        sw.bannedPeer[key] = time.Now().Add(defaultBanDuration)
        datajson, err := json.Marshal(sw.bannedPeer)
        if err != nil {