@@ -1571,28 +1571,30 @@ static void marshall_htlc_info(const tal_t *ctx,
15711571 struct changed_htlc * * changed ,
15721572 struct fulfilled_htlc * * fulfilled ,
15731573 const struct failed_htlc * * * failed ,
1574- struct added_htlc * * added )
1574+ const struct added_htlc * * * added )
15751575{
15761576 * changed = tal_arr (ctx , struct changed_htlc , 0 );
1577- * added = tal_arr (ctx , struct added_htlc , 0 );
1577+ * added = tal_arr (ctx , const struct added_htlc * , 0 );
15781578 * failed = tal_arr (ctx , const struct failed_htlc * , 0 );
15791579 * fulfilled = tal_arr (ctx , struct fulfilled_htlc , 0 );
15801580
15811581 for (size_t i = 0 ; i < tal_count (changed_htlcs ); i ++ ) {
15821582 const struct htlc * htlc = changed_htlcs [i ];
15831583 if (htlc -> state == RCVD_ADD_COMMIT ) {
1584- struct added_htlc a ;
1584+ struct added_htlc * a = tal ( * added , struct added_htlc ) ;
15851585
1586- a . id = htlc -> id ;
1587- a . amount = htlc -> amount ;
1588- a . payment_hash = htlc -> rhash ;
1589- a . cltv_expiry = abs_locktime_to_blocks (& htlc -> expiry );
1590- memcpy (a . onion_routing_packet ,
1586+ a -> id = htlc -> id ;
1587+ a -> amount = htlc -> amount ;
1588+ a -> payment_hash = htlc -> rhash ;
1589+ a -> cltv_expiry = abs_locktime_to_blocks (& htlc -> expiry );
1590+ memcpy (a -> onion_routing_packet ,
15911591 htlc -> routing ,
1592- sizeof (a .onion_routing_packet ));
1593- a .path_key = htlc -> path_key ;
1594- a .extra_tlvs = htlc -> extra_tlvs ;
1595- a .fail_immediate = htlc -> fail_immediate ;
1592+ sizeof (a -> onion_routing_packet ));
1593+ /* Note: we assume htlc's lifetime is greater than ours,
1594+ * so we just share pointers and don't bother copying */
1595+ a -> path_key = htlc -> path_key ;
1596+ a -> extra_tlvs = htlc -> extra_tlvs ;
1597+ a -> fail_immediate = htlc -> fail_immediate ;
15961598 tal_arr_expand (added , a );
15971599 } else if (htlc -> state == RCVD_REMOVE_COMMIT ) {
15981600 if (htlc -> r ) {
@@ -1629,7 +1631,7 @@ static void send_revocation(struct peer *peer,
16291631 struct changed_htlc * changed ;
16301632 struct fulfilled_htlc * fulfilled ;
16311633 const struct failed_htlc * * failed ;
1632- struct added_htlc * added ;
1634+ const struct added_htlc * * added ;
16331635 const u8 * msg ;
16341636 const u8 * msg_for_master ;
16351637
0 commit comments