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
}
// Remove deadline
pc.conn.SetDeadline(time.Time{})
-
+ peerNodeInfo.RemoteAddr = pc.conn.RemoteAddr().String()
return peerNodeInfo, nil
}
// 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")
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++ {
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 {
}
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
}
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 {