From: Matt Joiner <anacrolix@gmail.com>
Date: Tue, 25 Apr 2023 12:31:16 +0000 (+1000)
Subject: Break PeerConn status into more lines and improve pex status
X-Git-Tag: v1.51.0~35
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=267fab622d3438725f7658fbc9db9eec6162db0e;p=btrtrc.git

Break PeerConn status into more lines and improve pex status
---

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)
+}