diff --git a/go.mod b/go.mod index 9085290ade..9c8bebffe4 100644 --- a/go.mod +++ b/go.mod @@ -53,7 +53,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-20240226135248-bf6521f27229 + github.com/optimism-java/utp-go v0.0.0-20240228091629-5d3f4b9d3750 github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7 github.com/prysmaticlabs/go-bitfield v0.0.0-20210809151128-385d8c5e3fb7 diff --git a/go.sum b/go.sum index 2e471bc08b..62c9da0c5a 100644 --- a/go.sum +++ b/go.sum @@ -493,10 +493,8 @@ github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/optimism-java/utp-go v0.0.0-20240117090415-3a5aad17f644 h1:vrYEqCVnDS/Z3lLQa+GBrXRtIHN948TWy+aw04O9dpQ= -github.com/optimism-java/utp-go v0.0.0-20240117090415-3a5aad17f644/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ= -github.com/optimism-java/utp-go v0.0.0-20240226135248-bf6521f27229 h1:bCV7j32i0YgX+JBvOu3+QV/IQUhlNMr2dpb09vZRSdE= -github.com/optimism-java/utp-go v0.0.0-20240226135248-bf6521f27229/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ= +github.com/optimism-java/utp-go v0.0.0-20240228091629-5d3f4b9d3750 h1:STctUf47Xme/AdcoORRoq/BmgQxdLtbopnGlAqB7ahs= +github.com/optimism-java/utp-go v0.0.0-20240228091629-5d3f4b9d3750/go.mod h1:DZ0jYzLzt4ZsCmhI/iqYgGFoNx45OfpEoKzXB8HVALQ= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= @@ -570,7 +568,6 @@ github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobt github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -621,15 +618,11 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.5.2 h1:2LxUOGiR3O6tw8ui5sZa2LAaHnsviZdVOUZw4fvbnME= go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= -go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -804,8 +797,6 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= diff --git a/p2p/discover/api.go b/p2p/discover/api.go index e26945cc33..da592e41da 100644 --- a/p2p/discover/api.go +++ b/p2p/discover/api.go @@ -362,21 +362,26 @@ func (p *PortalAPI) HistoryFindContent(enr string, contentKey string) (interface switch flag { case portalwire.ContentRawSelector: - return &ContentInfo{ + contentInfo := &ContentInfo{ Content: hexutil.Encode(findContent.([]byte)), UtpTransfer: false, - }, nil + } + p.portalProtocol.log.Trace("HistoryFindContent", "contentInfo", contentInfo) + return contentInfo, nil case portalwire.ContentConnIdSelector: - return &ContentInfo{ + contentInfo := &ContentInfo{ Content: hexutil.Encode(findContent.([]byte)), UtpTransfer: true, - }, nil + } + p.portalProtocol.log.Trace("HistoryFindContent", "contentInfo", contentInfo) + return contentInfo, nil default: enrs := make([]string, 0) for _, r := range findContent.([]*enode.Node) { enrs = append(enrs, r.String()) } + p.portalProtocol.log.Trace("HistoryFindContent", "enrs", enrs) return &Enrs{ Enrs: enrs, }, nil diff --git a/p2p/discover/portal_protocol.go b/p2p/discover/portal_protocol.go index 4a2cbdf6ec..bd659a428f 100644 --- a/p2p/discover/portal_protocol.go +++ b/p2p/discover/portal_protocol.go @@ -648,7 +648,7 @@ func (p *PortalProtocol) processContent(target *enode.Node, resp []byte) (byte, return 0xff, nil, err } - p.log.Trace("Received content response", "id", target.ID(), "connIdMsg", connIdMsg) + p.log.Trace("Received returned content response", "id", target.ID(), "connIdMsg", connIdMsg) p.setJustSeen(target) connctx, conncancel := context.WithTimeout(p.closeCtx, defaultUTPConnectTimeout) laddr := p.utp.Addr().(*utp.Addr) @@ -666,22 +666,13 @@ func (p *PortalProtocol) processContent(target *enode.Node, resp []byte) (byte, return 0xff, nil, err } // Read ALL the data from the connection until EOF and return it - data := make([]byte, 0) - buf := make([]byte, 1024) - for { - var read int - read, err = conn.Read(buf) - if err != nil { - if errors.Is(err, io.EOF) { - p.log.Trace("Received content response", "id", target.ID(), "data", data, "size", read) - return resp[1], data, nil - } - - p.log.Error("failed to read from utp connection", "err", err) - return 0xff, nil, err - } - data = append(data, buf[:read]...) + data, err := io.ReadAll(conn) + if err != nil { + p.log.Error("failed to read from utp connection", "err", err) + return 0xff, nil, err } + p.log.Trace("Received content response", "id", target.ID(), "size", len(data), "data", data) + return resp[1], data, nil case portalwire.ContentEnrsSelector: enrs := &portalwire.Enrs{} err := enrs.UnmarshalSSZ(resp[2:]) @@ -968,7 +959,7 @@ func (p *PortalProtocol) handleFindContent(id enode.ID, addr *net.UDPAddr, reque enrs := p.truncateNodes(closestNodes, maxPayloadSize, enrOverhead) // TODO fix when no content and no enrs found if len(enrs) == 0 { - enrs = append(enrs, []byte{}) + enrs = nil } enrsMsg := &portalwire.Enrs{ @@ -1160,22 +1151,13 @@ func (p *PortalProtocol) handleOffer(id enode.ID, addr *net.UDPAddr, request *po return } // Read ALL the data from the connection until EOF and return it - data := make([]byte, 0) - buf := make([]byte, 1024) - for { - var n int - n, err = conn.Read(buf) - if err != nil { - if errors.Is(err, io.EOF) { - p.log.Trace("Received content response", "id", id, "data", data, "size", n) - break - } - - p.log.Error("failed to read from utp connection", "err", err) - return - } - data = append(data, buf[:n]...) + var data []byte + data, err = io.ReadAll(conn) + if err != nil { + p.log.Error("failed to read from utp connection", "err", err) + return } + p.log.Trace("Received offer content response", "id", id, "size", len(data), "data", data) err = p.handleOfferedContents(id, contentKeys, data) if err != nil { diff --git a/p2p/discover/portalwire/messages_test.go b/p2p/discover/portalwire/messages_test.go index 3cf71ca845..9e266cf417 100644 --- a/p2p/discover/portalwire/messages_test.go +++ b/p2p/discover/portalwire/messages_test.go @@ -204,10 +204,6 @@ func TestOfferAndAcceptMessage(t *testing.T) { ContentKeys: contentKeyBitlist, } - contentKeyBitlist1 := bitfield.Bitlist([]byte{0x02}) - fmt.Println(contentKeyBitlist1.Count()) - fmt.Println(contentKeyBitlist1.Len()) - expected = "0x0102060000000101" data, err = accept.MarshalSSZ() diff --git a/p2p/enode/nodedb.go b/p2p/enode/nodedb.go index 7e7fb69b29..1e88b7500a 100644 --- a/p2p/enode/nodedb.go +++ b/p2p/enode/nodedb.go @@ -434,7 +434,7 @@ func (db *DB) localSeq(id ID) uint64 { if seq := db.fetchUint64(localItemKey(id, dbLocalSeq)); seq > 0 { return seq } - return nowMilliseconds() + return 1 } // storeLocalSeq stores the local record sequence counter.