]> Sergey Matveev's repositories - btrtrc.git/blobdiff - peerconn.go
Don't panic if changing interest fills the write buffer
[btrtrc.git] / peerconn.go
index 9915758332b7ca1408e58fd566008e3bba224e19..68da20f1b1db29e54085fb31d7a7b97ab3d12134 100644 (file)
@@ -95,7 +95,6 @@ func (cn *PeerConn) pexStatus() string {
                                }), ","),
                        cn.pex.numPending(),
                )
-
        }
 }
 
@@ -1072,10 +1071,15 @@ func (c *PeerConn) dialAddr() PeerRemoteAddr {
        return netip.AddrPortFrom(addrPort.Addr(), uint16(c.PeerListenPort))
 }
 
-func (c *PeerConn) pexEvent(t pexEventType) pexEvent {
+func (c *PeerConn) pexEvent(t pexEventType) (_ pexEvent, err error) {
        f := c.pexPeerFlags()
-       addr := c.dialAddr()
-       return pexEvent{t, addr, f, nil}
+       dialAddr := c.dialAddr()
+       addr, err := addrPortFromPeerRemoteAddr(dialAddr)
+       if err != nil || !addr.IsValid() {
+               err = fmt.Errorf("parsing dial addr %q: %w", dialAddr, err)
+               return
+       }
+       return pexEvent{t, addr, f, nil}, nil
 }
 
 func (c *PeerConn) String() string {