From 267fab622d3438725f7658fbc9db9eec6162db0e Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 25 Apr 2023 22:31:16 +1000 Subject: [PATCH] Break PeerConn status into more lines and improve pex status --- peerconn.go | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/peerconn.go b/peerconn.go index df792ae3..4fefd610 100644 --- a/peerconn.go +++ b/peerconn.go @@ -65,20 +65,30 @@ type PeerConn struct { outstandingHolepunchingRendezvous map[netip.AddrPort]struct{} } +func (cn *PeerConn) pexStatus() string { + if !cn.bitExtensionEnabled(pp.ExtensionBitExtended) { + return "extended protocol disabled" + } + if cn.PeerExtensionIDs == nil { + return "pending extended handshake" + } + if !cn.supportsExtension(pp.ExtensionNamePex) { + return "unsupported" + } + return fmt.Sprintf( + "%v conns, %v unsent events", + len(cn.pex.remoteLiveConns), + cn.pex.numPending(), + ) +} + func (cn *PeerConn) peerImplStatusLines() []string { - lines := make([]string, 0, 2) - lines = append( - lines, - fmt.Sprintf("%+-55q %v %s", cn.PeerID, cn.PeerExtensionBytes, cn.connString)) - if cn.supportsExtension(pp.ExtensionNamePex) { - lines = append( - lines, - fmt.Sprintf( - "pex: %v conns, %v unsent events", - cn.pex.remoteLiveConns, - cn.pex.numPending())) + return []string{ + cn.connString, + fmt.Sprintf("peer id: %+q", cn.PeerID), + fmt.Sprintf("extensions: %v", cn.PeerExtensionBytes), + fmt.Sprintf("pex: %s", cn.pexStatus()), } - return lines } // Returns true if the connection is over IPv6. @@ -1069,3 +1079,7 @@ func (pc *PeerConn) remoteAddrPort() Option[netip.AddrPort] { AddrPort() netip.AddrPort }).AddrPort()) } + +func (pc *PeerConn) bitExtensionEnabled(bit pp.ExtensionBit) bool { + return pc.t.cl.config.Extensions.GetBit(bit) && pc.PeerExtensionBytes.GetBit(bit) +} -- 2.44.0