mirror of
https://github.com/aljazceru/lightning.git
synced 2026-01-09 00:54:22 +01:00
tlvstream: Allow overwriting an already set value
This is necessary in the next commit to override the total_msat that is being delivered to the destination.
This commit is contained in:
@@ -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; i<tal_count(stream); i++)
|
||||
if (stream[i].numtype == type)
|
||||
return &stream[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void tlvstream_set_raw(struct tlv_field **stream, u64 type, void *value, size_t valuelen)
|
||||
{
|
||||
struct tlv_field f;
|
||||
f.length = valuelen;
|
||||
f.numtype = type;
|
||||
f.value = tal_dup_arr(*stream, u8, value, f.length, 0);
|
||||
tal_arr_expand(stream, f);
|
||||
struct tlv_field f, *e = tlvstream_get_raw(*stream, type);
|
||||
|
||||
if (e != NULL) {
|
||||
tal_free(e->value);
|
||||
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<tal_count(stream); i++)
|
||||
if (stream[i].numtype == type)
|
||||
return &stream[i];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
bool tlvstream_get_short_channel_id(struct tlv_field *stream, u64 type,
|
||||
struct short_channel_id *value)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user