"sort"
"strconv"
"strings"
+ "sync/atomic"
"time"
"github.com/RoaringBitmap/roaring"
PeerMaxRequests maxRequests // Maximum pending requests the peer allows.
PeerExtensionIDs map[pp.ExtensionName]pp.ExtensionNumber
- PeerClientName string
+ PeerClientName atomic.Value
logger log.Logger
}
func (c *PeerConn) logProtocolBehaviour(level log.Level, format string, arg ...interface{}) {
c.logger.WithLevel(level).WithContextText(fmt.Sprintf(
- "peer id %q, ext v %q", c.PeerID, c.PeerClientName,
+ "peer id %q, ext v %q", c.PeerID, c.PeerClientName.Load(),
)).SkipCallers(1).Printf(format, arg...)
}
if d.Reqq != 0 {
c.PeerMaxRequests = d.Reqq
}
- c.PeerClientName = d.V
+ c.PeerClientName.Store(d.V)
if c.PeerExtensionIDs == nil {
c.PeerExtensionIDs = make(map[pp.ExtensionName]pp.ExtensionNumber, len(d.M))
}
}
func (c *PeerConn) String() string {
- return fmt.Sprintf("connection %p", c)
+ return fmt.Sprintf("%T %p [id=%q, exts=%v, v=%q]", c, c, c.PeerID, c.PeerExtensionBytes, c.PeerClientName.Load())
}
func (c *Peer) trust() connectionTrust {