diff --git a/wire/tlvstream.c b/wire/tlvstream.c index df96d307a..788744483 100644 --- a/wire/tlvstream.c +++ b/wire/tlvstream.c @@ -21,13 +21,29 @@ void towire_tlvstream_raw(u8 **pptr, const struct tlv_field *fields) } } +static struct tlv_field *tlvstream_get_raw(struct tlv_field *stream, u64 type) +{ + for (size_t i=0; ivalue); + e->length = valuelen; + e->value = tal_dup_arr(*stream, u8, value, e->length, 0); + } else { + /* If we haven't found it insert it insead. */ + f.length = valuelen; + f.numtype = type; + f.value = tal_dup_arr(*stream, u8, value, f.length, 0); + tal_arr_expand(stream, f); + } } void tlvstream_set_short_channel_id(struct tlv_field **stream, u64 type, @@ -52,15 +68,6 @@ void tlvstream_set_tu32(struct tlv_field **stream, u64 type, u32 value) tlvstream_set_raw(stream, type, ser, tal_bytelen(ser)); } -static struct tlv_field *tlvstream_get_raw(struct tlv_field *stream, u64 type) -{ - for (size_t i=0; i