From 3dc8cd5659e7d491248af378ac36ff079ce24b7e Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Sat, 24 Dec 2016 14:46:42 -0600 Subject: [PATCH] lnwire: correct max payload estimate for NodeAnnouncement, add test --- lnwire/node_announcement.go | 9 +++++---- lnwire/node_announcement_test.go | 28 ++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/lnwire/node_announcement.go b/lnwire/node_announcement.go index 43e484695..ef4f491f8 100644 --- a/lnwire/node_announcement.go +++ b/lnwire/node_announcement.go @@ -178,11 +178,11 @@ func (c *NodeAnnouncement) MaxPayloadLength(pver uint32) uint32 { // Ipv6 - 16 bytes length += 16 - // Port - 2 bytes - length += 2 + // Port - 4 bytes + length += 4 - // NodeID - 32 bytes - length += 32 + // NodeID - 33 bytes + length += 33 // RGBColor - 3 bytes length += 3 @@ -193,6 +193,7 @@ func (c *NodeAnnouncement) MaxPayloadLength(pver uint32) uint32 { // Alias - 32 bytes length += 32 + // 158 return length } diff --git a/lnwire/node_announcement_test.go b/lnwire/node_announcement_test.go index 52446114e..ad7c5e7b2 100644 --- a/lnwire/node_announcement_test.go +++ b/lnwire/node_announcement_test.go @@ -2,10 +2,11 @@ package lnwire import ( "bytes" - "github.com/roasbeef/btcd/btcec" - "github.com/roasbeef/btcd/wire" "reflect" "testing" + + "github.com/roasbeef/btcd/btcec" + "github.com/roasbeef/btcd/wire" ) func TestNodeAnnouncementEncodeDecode(t *testing.T) { @@ -92,3 +93,26 @@ func TestNodeAnnoucementBadValidation(t *testing.T) { t.Fatal("error wasn't raised") } } + +func TestNodeAnnoucementPayloadLength(t *testing.T) { + na := &NodeAnnouncement{ + Signature: someSig, + Timestamp: maxUint32, + Address: someAddress, + NodeID: pubKey, + RGBColor: someRGB, + pad: maxUint16, + Alias: someAlias, + } + + var b bytes.Buffer + if err := na.Encode(&b, 0); err != nil { + t.Fatalf("unable to encode node: %v", err) + } + + serializedLength := uint32(b.Len()) + if serializedLength != na.MaxPayloadLength(0) { + t.Fatalf("payload length estimate is incorrect: expected %v "+ + "got %v", serializedLength, na.MaxPayloadLength(0)) + } +}