From acfeaebb62fb6ce523e3feeda4db326891f23176 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 4 Jun 2020 13:43:35 +0930 Subject: [PATCH] pyln.proto.message: allow fields with options to be missing. Signed-off-by: Rusty Russell --- contrib/pyln-proto/pyln/proto/message/message.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/contrib/pyln-proto/pyln/proto/message/message.py b/contrib/pyln-proto/pyln/proto/message/message.py index 41c9e64d0..9919fc080 100644 --- a/contrib/pyln-proto/pyln/proto/message/message.py +++ b/contrib/pyln-proto/pyln/proto/message/message.py @@ -142,7 +142,7 @@ class MessageTypeField(object): def missing_fields(self, fields): """Return this field if it's not in fields""" - if self.name not in fields and not self.fieldtype.is_optional(): + if self.name not in fields and not self.option and not self.fieldtype.is_optional(): return [self] return [] @@ -294,7 +294,9 @@ inherit from this too. for field in self.fields: val = field.fieldtype.read(io_in, otherfields) if val is None: - raise ValueError("{}.{}: short read".format(self, field)) + # Might only exist with certain options available + if field.fieldtype.option is None: + raise ValueError("{}.{}: short read".format(self, field)) vals[field.name] = val return vals