@@ -302,6 +302,8 @@ pub enum HTLCDestination {
302
302
/// Short channel id we are requesting to forward an HTLC to.
303
303
requested_forward_scid : u64
304
304
} ,
305
+ /// We couldn't decode the incoming onion to obtain the forwarding details.
306
+ InvalidOnion ,
305
307
/// Failure scenario where an HTLC may have been forwarded to be intended for us,
306
308
/// but is invalid for some reason, so we reject it.
307
309
///
@@ -329,6 +331,7 @@ impl_writeable_tlv_based_enum_upgradable!(HTLCDestination,
329
331
( 2 , UnknownNextHop ) => {
330
332
( 0 , requested_forward_scid, required) ,
331
333
} ,
334
+ ( 3 , InvalidOnion ) => { } ,
332
335
( 4 , FailedPayment ) => {
333
336
( 0 , payment_hash, required) ,
334
337
} ,
@@ -1294,7 +1297,7 @@ impl MaybeReadable for Event {
1294
1297
// Note that we do not write a length-prefixed TLV for FundingGenerationReady events.
1295
1298
0u8 => Ok ( None ) ,
1296
1299
1u8 => {
1297
- let f = || {
1300
+ let mut f = || {
1298
1301
let mut payment_hash = PaymentHash ( [ 0 ; 32 ] ) ;
1299
1302
let mut payment_preimage = None ;
1300
1303
let mut payment_secret = None ;
@@ -1342,7 +1345,7 @@ impl MaybeReadable for Event {
1342
1345
f ( )
1343
1346
} ,
1344
1347
2u8 => {
1345
- let f = || {
1348
+ let mut f = || {
1346
1349
let mut payment_preimage = PaymentPreimage ( [ 0 ; 32 ] ) ;
1347
1350
let mut payment_hash = None ;
1348
1351
let mut payment_id = None ;
@@ -1366,7 +1369,7 @@ impl MaybeReadable for Event {
1366
1369
f ( )
1367
1370
} ,
1368
1371
3u8 => {
1369
- let f = || {
1372
+ let mut f = || {
1370
1373
#[ cfg( test) ]
1371
1374
let error_code = Readable :: read ( reader) ?;
1372
1375
#[ cfg( test) ]
@@ -1409,7 +1412,7 @@ impl MaybeReadable for Event {
1409
1412
} ,
1410
1413
4u8 => Ok ( None ) ,
1411
1414
5u8 => {
1412
- let f = || {
1415
+ let mut f = || {
1413
1416
let mut outputs = WithoutLength ( Vec :: new ( ) ) ;
1414
1417
let mut channel_id: Option < ChannelId > = None ;
1415
1418
read_tlv_fields ! ( reader, {
@@ -1445,7 +1448,7 @@ impl MaybeReadable for Event {
1445
1448
} ) )
1446
1449
} ,
1447
1450
7u8 => {
1448
- let f = || {
1451
+ let mut f = || {
1449
1452
let mut prev_channel_id = None ;
1450
1453
let mut next_channel_id = None ;
1451
1454
let mut prev_user_channel_id = None ;
@@ -1473,7 +1476,7 @@ impl MaybeReadable for Event {
1473
1476
f ( )
1474
1477
} ,
1475
1478
9u8 => {
1476
- let f = || {
1479
+ let mut f = || {
1477
1480
let mut channel_id = ChannelId :: new_zero ( ) ;
1478
1481
let mut reason = UpgradableRequired ( None ) ;
1479
1482
let mut user_channel_id_low_opt: Option < u64 > = None ;
@@ -1503,7 +1506,7 @@ impl MaybeReadable for Event {
1503
1506
f ( )
1504
1507
} ,
1505
1508
11u8 => {
1506
- let f = || {
1509
+ let mut f = || {
1507
1510
let mut channel_id = ChannelId :: new_zero ( ) ;
1508
1511
let mut transaction = Transaction { version : 2 , lock_time : LockTime :: ZERO , input : Vec :: new ( ) , output : Vec :: new ( ) } ;
1509
1512
read_tlv_fields ! ( reader, {
@@ -1515,7 +1518,7 @@ impl MaybeReadable for Event {
1515
1518
f ( )
1516
1519
} ,
1517
1520
13u8 => {
1518
- let f = || {
1521
+ let mut f = || {
1519
1522
_init_and_read_len_prefixed_tlv_fields ! ( reader, {
1520
1523
( 0 , payment_id, required) ,
1521
1524
( 2 , payment_hash, option) ,
@@ -1531,7 +1534,7 @@ impl MaybeReadable for Event {
1531
1534
f ( )
1532
1535
} ,
1533
1536
15u8 => {
1534
- let f = || {
1537
+ let mut f = || {
1535
1538
let mut payment_hash = PaymentHash ( [ 0 ; 32 ] ) ;
1536
1539
let mut payment_id = PaymentId ( [ 0 ; 32 ] ) ;
1537
1540
let mut reason = None ;
@@ -1553,7 +1556,7 @@ impl MaybeReadable for Event {
1553
1556
Ok ( None )
1554
1557
} ,
1555
1558
19u8 => {
1556
- let f = || {
1559
+ let mut f = || {
1557
1560
let mut payment_hash = PaymentHash ( [ 0 ; 32 ] ) ;
1558
1561
let mut purpose = UpgradableRequired ( None ) ;
1559
1562
let mut amount_msat = 0 ;
@@ -1580,7 +1583,7 @@ impl MaybeReadable for Event {
1580
1583
f ( )
1581
1584
} ,
1582
1585
21u8 => {
1583
- let f = || {
1586
+ let mut f = || {
1584
1587
_init_and_read_len_prefixed_tlv_fields ! ( reader, {
1585
1588
( 0 , payment_id, required) ,
1586
1589
( 2 , payment_hash, required) ,
@@ -1596,7 +1599,7 @@ impl MaybeReadable for Event {
1596
1599
f ( )
1597
1600
} ,
1598
1601
23u8 => {
1599
- let f = || {
1602
+ let mut f = || {
1600
1603
_init_and_read_len_prefixed_tlv_fields ! ( reader, {
1601
1604
( 0 , payment_id, required) ,
1602
1605
( 2 , payment_hash, required) ,
@@ -1614,7 +1617,7 @@ impl MaybeReadable for Event {
1614
1617
f ( )
1615
1618
} ,
1616
1619
25u8 => {
1617
- let f = || {
1620
+ let mut f = || {
1618
1621
let mut prev_channel_id = ChannelId :: new_zero ( ) ;
1619
1622
let mut failed_next_destination_opt = UpgradableRequired ( None ) ;
1620
1623
read_tlv_fields ! ( reader, {
@@ -1630,7 +1633,7 @@ impl MaybeReadable for Event {
1630
1633
} ,
1631
1634
27u8 => Ok ( None ) ,
1632
1635
29u8 => {
1633
- let f = || {
1636
+ let mut f = || {
1634
1637
let mut channel_id = ChannelId :: new_zero ( ) ;
1635
1638
let mut user_channel_id: u128 = 0 ;
1636
1639
let mut counterparty_node_id = RequiredWrapper ( None ) ;
@@ -1652,7 +1655,7 @@ impl MaybeReadable for Event {
1652
1655
f ( )
1653
1656
} ,
1654
1657
31u8 => {
1655
- let f = || {
1658
+ let mut f = || {
1656
1659
let mut channel_id = ChannelId :: new_zero ( ) ;
1657
1660
let mut user_channel_id: u128 = 0 ;
1658
1661
let mut former_temporary_channel_id = None ;
@@ -1680,7 +1683,7 @@ impl MaybeReadable for Event {
1680
1683
f ( )
1681
1684
} ,
1682
1685
33u8 => {
1683
- let f = || {
1686
+ let mut f = || {
1684
1687
_init_and_read_len_prefixed_tlv_fields ! ( reader, {
1685
1688
( 0 , payment_id, required) ,
1686
1689
} ) ;
0 commit comments