From 1bf751a4746de8aa90e3a111ec46a20ef671b06a Mon Sep 17 00:00:00 2001 From: Arceliar Date: Sat, 19 Jun 2021 07:44:37 -0500 Subject: [PATCH] update ironwood, only store 1 packet in the pre-session buffer --- go.mod | 2 +- go.sum | 4 ++-- src/core/keystore.go | 14 +++++--------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 6c104b0..398504c 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/yggdrasil-network/yggdrasil-go go 1.16 require ( - github.com/Arceliar/ironwood v0.0.0-20210613152842-297306b677cc + github.com/Arceliar/ironwood v0.0.0-20210619124114-6ad55cae5031 github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979 github.com/VividCortex/ewma v1.2.0 // indirect github.com/cheggaaa/pb/v3 v3.0.8 diff --git a/go.sum b/go.sum index 84c2fad..5d11fad 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/Arceliar/ironwood v0.0.0-20210613152842-297306b677cc h1:0eUsfi0FBobUVaBJEcC5x2/Y7Geq7Mpvx51rWmZN7NU= -github.com/Arceliar/ironwood v0.0.0-20210613152842-297306b677cc/go.mod h1:RP72rucOFm5udrnEzTmIWLRVGQiV/fSUAQXJ0RST/nk= +github.com/Arceliar/ironwood v0.0.0-20210619124114-6ad55cae5031 h1:DZVDfYhVdu+0wAiRHoY1olyNkKxIot9UjBnbQFzuUlM= +github.com/Arceliar/ironwood v0.0.0-20210619124114-6ad55cae5031/go.mod h1:RP72rucOFm5udrnEzTmIWLRVGQiV/fSUAQXJ0RST/nk= github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979 h1:WndgpSW13S32VLQ3ugUxx2EnnWmgba1kCqPkd4Gk1yQ= github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979/go.mod h1:6Lkn+/zJilRMsKmbmG1RPoamiArC6HS73xbwRyp3UyI= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= diff --git a/src/core/keystore.go b/src/core/keystore.go index 82fa931..5062a67 100644 --- a/src/core/keystore.go +++ b/src/core/keystore.go @@ -40,7 +40,7 @@ type keyInfo struct { } type buffer struct { - packets [][]byte + packet []byte timeout *time.Timer } @@ -73,7 +73,7 @@ func (k *keyStore) sendToAddress(addr address.Address, bs []byte) { k.addrBuffer[addr] = buf } msg := append([]byte(nil), bs...) - buf.packets = append(buf.packets, msg) + buf.packet = msg if buf.timeout != nil { buf.timeout.Stop() } @@ -102,7 +102,7 @@ func (k *keyStore) sendToSubnet(subnet address.Subnet, bs []byte) { k.subnetBuffer[subnet] = buf } msg := append([]byte(nil), bs...) - buf.packets = append(buf.packets, msg) + buf.packet = msg if buf.timeout != nil { buf.timeout.Stop() } @@ -134,15 +134,11 @@ func (k *keyStore) update(key ed25519.PublicKey) *keyInfo { k.resetTimeout(info) k.mutex.Unlock() if buf := k.addrBuffer[info.address]; buf != nil { - for _, bs := range buf.packets { - _, _ = k.core.pc.WriteTo(bs, iwt.Addr(info.key[:])) - } + k.core.pc.WriteTo(buf.packet, iwt.Addr(info.key[:])) delete(k.addrBuffer, info.address) } if buf := k.subnetBuffer[info.subnet]; buf != nil { - for _, bs := range buf.packets { - _, _ = k.core.pc.WriteTo(bs, iwt.Addr(info.key[:])) - } + k.core.pc.WriteTo(buf.packet, iwt.Addr(info.key[:])) delete(k.subnetBuffer, info.subnet) } } else {