]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Break PeerConn status into more lines and improve pex status
authorMatt Joiner <anacrolix@gmail.com>
Tue, 25 Apr 2023 12:31:16 +0000 (22:31 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Tue, 9 May 2023 05:45:52 +0000 (15:45 +1000)
peerconn.go

index df792ae3053cfa6cdfa9153776a23d38d83ee5cc..4fefd6101b954c0a0347108e914653425c1b234b 100644 (file)
@@ -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)
+}