revert utp async

Signed-off-by: Chen Kai <281165273grape@gmail.com>
This commit is contained in:
Chen Kai 2024-05-27 09:32:04 +08:00
parent 06f2d232d2
commit 3ab51ce84f

View file

@ -53,7 +53,7 @@ const (
portalFindnodesResultLimit = 32 portalFindnodesResultLimit = 32
defaultUTPConnectTimeout = 60 * time.Second defaultUTPConnectTimeout = 15 * time.Second
defaultUTPWriteTimeout = 60 * time.Second defaultUTPWriteTimeout = 60 * time.Second
@ -235,6 +235,7 @@ func (p *PortalProtocol) Start() error {
if err != nil { if err != nil {
return err return err
} }
p.DiscV5.RegisterTalkHandler(p.protocolId, p.handleTalkRequest) p.DiscV5.RegisterTalkHandler(p.protocolId, p.handleTalkRequest)
p.DiscV5.RegisterTalkHandler(string(portalwire.UTPNetwork), p.handleUtpTalkRequest) p.DiscV5.RegisterTalkHandler(string(portalwire.UTPNetwork), p.handleUtpTalkRequest)
@ -295,19 +296,13 @@ func (p *PortalProtocol) setupUDPListening() error {
var err error var err error
p.packetRouter = utp.NewPacketRouter( p.packetRouter = utp.NewPacketRouter(
func(buf []byte, addr *net.UDPAddr) (int, error) { 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() p.cachedIdsLock.Lock()
defer p.cachedIdsLock.Unlock() defer p.cachedIdsLock.Unlock()
if id, ok := p.cachedIds[addr.String()]; ok { if id, ok := p.cachedIds[addr.String()]; ok {
sendToId := id _, err := p.DiscV5.TalkRequestToID(id, addr, string(portalwire.UTPNetwork), buf)
go func(targetId enode.ID, addr *net.UDPAddr, utpNetwork string, buffer []byte) { return len(buf), err
_, 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
} else { } else {
p.Log.Warn("not found target node info", "ip", addr.IP.To4().String(), "port", addr.Port, "bufLength", len(buf)) 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") 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 { if n := p.DiscV5.getNode(id); n != nil {
p.table.addSeenNode(wrapNode(n)) p.table.addSeenNode(wrapNode(n))
} }
p.putCacheId(id, addr) p.putCacheId(id, addr)
p.Log.Trace("receive utp data", "addr", addr, "msg-length", len(msg)) p.Log.Trace("receive utp data", "addr", addr, "msg-length", len(msg))
p.packetRouter.ReceiveMessage(msg, addr) p.packetRouter.ReceiveMessage(msg, addr)