From afea2520ba6d0268d2c2d0e1ed138294e4e7c9e4 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 6 Dec 2017 10:06:32 +1030 Subject: [PATCH] wireaddr: marshal empty address properly. On unmarshal, we stop unmarshaling on a 0 (ADDR_TYPE_PADDING) type. So we should also stop marshaling in that case. Signed-off-by: Rusty Russell --- common/wireaddr.c | 4 ++++ common/wireaddr.h | 1 + 2 files changed, 5 insertions(+) diff --git a/common/wireaddr.c b/common/wireaddr.c index ce4bea332..9d529bacb 100644 --- a/common/wireaddr.c +++ b/common/wireaddr.c @@ -28,6 +28,10 @@ bool fromwire_wireaddr(const u8 **cursor, size_t *max, struct wireaddr *addr) void towire_wireaddr(u8 **pptr, const struct wireaddr *addr) { + if (!addr || addr->type == ADDR_TYPE_PADDING) { + towire_u8(pptr, ADDR_TYPE_PADDING); + return; + } towire_u8(pptr, addr->type); towire(pptr, addr->addr, addr->addrlen); towire_u16(pptr, addr->port); diff --git a/common/wireaddr.h b/common/wireaddr.h index ae196b9cc..ab51b3c98 100644 --- a/common/wireaddr.h +++ b/common/wireaddr.h @@ -36,6 +36,7 @@ struct wireaddr { u16 port; }; +/* Inserts a single ADDR_TYPE_PADDING if addr is NULL */ void towire_wireaddr(u8 **pptr, const struct wireaddr *addr); bool fromwire_wireaddr(const u8 **cursor, size_t *max, struct wireaddr *addr); #endif /* LIGHTNING_COMMON_WIREADDR_H */