diff --git a/go.mod b/go.mod index f18f60674586..ec223c5b010b 100644 --- a/go.mod +++ b/go.mod @@ -55,7 +55,7 @@ require ( github.com/mattn/go-sqlite3 v1.14.18 github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416 github.com/olekukonko/tablewriter v0.0.5 - github.com/optimism-java/utp-go v0.0.0-20240530085325-d8dd9d262631 + github.com/optimism-java/utp-go v0.0.0-20240531024756-00da67044c50 github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 github.com/protolambda/bls12-381-util v0.1.0 github.com/protolambda/zrnt v0.32.2 diff --git a/go.sum b/go.sum index 445730cf1316..b1cb0e088a45 100644 --- a/go.sum +++ b/go.sum @@ -433,6 +433,10 @@ github.com/optimism-java/utp-go v0.0.0-20240309041853-b6b3a0dea581 h1:ZxgrtI0xIw github.com/optimism-java/utp-go v0.0.0-20240309041853-b6b3a0dea581/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ= github.com/optimism-java/utp-go v0.0.0-20240530085325-d8dd9d262631 h1:01AecSuOSS6fsIU/oTVG/C70hIl3xPen99qy2hGr57w= github.com/optimism-java/utp-go v0.0.0-20240530085325-d8dd9d262631/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ= +github.com/optimism-java/utp-go v0.0.0-20240531021243-e12d25b6be38 h1:t0gRqfM7wUrFyryagUpw4TmYY0DLt+rjPaBd92i+W2M= +github.com/optimism-java/utp-go v0.0.0-20240531021243-e12d25b6be38/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ= +github.com/optimism-java/utp-go v0.0.0-20240531024756-00da67044c50 h1:I1jGQkNEWq7BTFZkCJKLDrqFLC1jR3EC7jz3to4kpLg= +github.com/optimism-java/utp-go v0.0.0-20240531024756-00da67044c50/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ= github.com/optimism-java/zrnt v0.32.4-0.20240415084906-d9dbf06b32f7 h1:ZTQWXQ8xblCRUXhZs3h5qrBMSAHe8iNH7BG7a7IVFlI= github.com/optimism-java/zrnt v0.32.4-0.20240415084906-d9dbf06b32f7/go.mod h1:A0fezkp9Tt3GBLATSPIbuY4ywYESyAuc/FFmPKg8Lqs= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM= diff --git a/p2p/discover/portal_protocol.go b/p2p/discover/portal_protocol.go index a56f7e6dc82f..97bb932c2950 100644 --- a/p2p/discover/portal_protocol.go +++ b/p2p/discover/portal_protocol.go @@ -1044,6 +1044,7 @@ func (p *PortalProtocol) handleFindContent(id enode.ID, addr *net.UDPAddr, reque connIdSend := connId.SendId() go func(bctx context.Context) { + defer p.connIdGen.Remove(connId) for { select { case <-bctx.Done(): @@ -1166,6 +1167,7 @@ func (p *PortalProtocol) handleOffer(id enode.ID, addr *net.UDPAddr, request *po connIdSend := connId.SendId() go func(bctx context.Context) { + defer p.connIdGen.Remove(connId) for { select { case <-bctx.Done(): diff --git a/p2p/discover/portal_protocol_test.go b/p2p/discover/portal_protocol_test.go index f9b889232394..6c6993c98a84 100644 --- a/p2p/discover/portal_protocol_test.go +++ b/p2p/discover/portal_protocol_test.go @@ -10,6 +10,7 @@ import ( "testing" "time" + "github.com/ethereum/go-ethereum/p2p/enr" "github.com/ethereum/go-ethereum/portalnetwork/storage" "github.com/prysmaticlabs/go-bitfield" "golang.org/x/exp/slices" @@ -78,6 +79,7 @@ func setupLocalPortalNode(addr string, bootNodes []*enode.Node) (*PortalProtocol } } } + localNode.Set(enr.UDP(addr1.Port)) discV5, err := ListenV5(conn, localNode, discCfg) if err != nil { @@ -113,6 +115,15 @@ func TestPortalWireProtocolUdp(t *testing.T) { assert.NoError(t, err) time.Sleep(10 * time.Second) + node1.putCacheNodeId(node2.localNode.Node()) + node1.putCacheNodeId(node3.localNode.Node()) + + node2.putCacheNodeId(node1.localNode.Node()) + node2.putCacheNodeId(node3.localNode.Node()) + + node3.putCacheNodeId(node1.localNode.Node()) + node3.putCacheNodeId(node2.localNode.Node()) + udpAddrStr1 := fmt.Sprintf("%s:%d", node1.localNode.Node().IP(), node1.localNode.Node().UDP()) udpAddrStr2 := fmt.Sprintf("%s:%d", node2.localNode.Node().IP(), node2.localNode.Node().UDP())