From 3ab51ce84fcf9ace42b1cf5fe6aba78fe9bcfc87 Mon Sep 17 00:00:00 2001 From: Chen Kai <281165273grape@gmail.com> Date: Mon, 27 May 2024 09:32:04 +0800 Subject: [PATCH] revert utp async Signed-off-by: Chen Kai <281165273grape@gmail.com> --- p2p/discover/portal_protocol.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/p2p/discover/portal_protocol.go b/p2p/discover/portal_protocol.go index 79919c3327ac..34f213fbb7eb 100644 --- a/p2p/discover/portal_protocol.go +++ b/p2p/discover/portal_protocol.go @@ -53,7 +53,7 @@ const ( portalFindnodesResultLimit = 32 - defaultUTPConnectTimeout = 60 * time.Second + defaultUTPConnectTimeout = 15 * time.Second defaultUTPWriteTimeout = 60 * time.Second @@ -235,6 +235,7 @@ func (p *PortalProtocol) Start() error { if err != nil { return err } + p.DiscV5.RegisterTalkHandler(p.protocolId, p.handleTalkRequest) p.DiscV5.RegisterTalkHandler(string(portalwire.UTPNetwork), p.handleUtpTalkRequest) @@ -295,19 +296,13 @@ func (p *PortalProtocol) setupUDPListening() error { var err error p.packetRouter = utp.NewPacketRouter( func(buf []byte, addr *net.UDPAddr) (int, error) { - p.Log.Info("will send to target data", "network", string(portalwire.UTPNetwork), "ip", addr.IP.To4().String(), "port", addr.Port, "bufLength", len(buf)) + p.Log.Info("will send to target data", "ip", addr.IP.To4().String(), "port", addr.Port, "bufLength", len(buf)) p.cachedIdsLock.Lock() defer p.cachedIdsLock.Unlock() if id, ok := p.cachedIds[addr.String()]; ok { - sendToId := id - go func(targetId enode.ID, addr *net.UDPAddr, utpNetwork string, buffer []byte) { - _, err := p.DiscV5.TalkRequestToID(targetId, addr, utpNetwork, buffer) - if err != nil { - p.Log.Error("send utp talk request failed", "err", err) - } - }(sendToId, addr, string(portalwire.UTPNetwork), buf) - return len(buf), nil + _, err := p.DiscV5.TalkRequestToID(id, addr, string(portalwire.UTPNetwork), buf) + return len(buf), err } else { p.Log.Warn("not found target node info", "ip", addr.IP.To4().String(), "port", addr.Port, "bufLength", len(buf)) return 0, fmt.Errorf("not found target node id") @@ -800,6 +795,7 @@ func (p *PortalProtocol) handleUtpTalkRequest(id enode.ID, addr *net.UDPAddr, ms if n := p.DiscV5.getNode(id); n != nil { p.table.addSeenNode(wrapNode(n)) } + p.putCacheId(id, addr) p.Log.Trace("receive utp data", "addr", addr, "msg-length", len(msg)) p.packetRouter.ReceiveMessage(msg, addr)