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.
AddrPort() netip.AddrPort
}).AddrPort())
}
+
+func (pc *PeerConn) bitExtensionEnabled(bit pp.ExtensionBit) bool {
+ return pc.t.cl.config.Extensions.GetBit(bit) && pc.PeerExtensionBytes.GetBit(bit)
+}