@@ -60,6 +60,8 @@ pub enum PaymentPurpose {
60
60
/// [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
61
61
/// [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
62
62
payment_secret : PaymentSecret ,
63
+ ///XXX
64
+ payment_metadata : Option < Vec < u8 > > ,
63
65
} ,
64
66
/// Because this is a spontaneous payment, the payer generated their own preimage rather than us
65
67
/// (the payee) providing a preimage.
@@ -462,17 +464,20 @@ impl Writeable for Event {
462
464
1u8 . write ( writer) ?;
463
465
let mut payment_secret = None ;
464
466
let payment_preimage;
467
+ let mut payment_metadata = None ;
465
468
match & purpose {
466
- PaymentPurpose :: InvoicePayment { payment_preimage : preimage, payment_secret : secret } => {
469
+ PaymentPurpose :: InvoicePayment { payment_preimage : preimage, payment_secret : secret, payment_metadata : metadata } => {
467
470
payment_secret = Some ( secret) ;
468
471
payment_preimage = * preimage;
472
+ payment_metadata = metadata. as_ref ( ) ;
469
473
} ,
470
474
PaymentPurpose :: SpontaneousPayment ( preimage) => {
471
475
payment_preimage = Some ( * preimage) ;
472
476
}
473
477
}
474
478
write_tlv_fields ! ( writer, {
475
479
( 0 , payment_hash, required) ,
480
+ ( 1 , payment_metadata, option) ,
476
481
( 2 , payment_secret, option) ,
477
482
( 4 , amt, required) ,
478
483
( 6 , 0u64 , required) , // user_payment_id required for compatibility with 0.0.103 and earlier
@@ -584,10 +589,12 @@ impl MaybeReadable for Event {
584
589
let mut payment_hash = PaymentHash ( [ 0 ; 32 ] ) ;
585
590
let mut payment_preimage = None ;
586
591
let mut payment_secret = None ;
592
+ let mut payment_metadata = None ;
587
593
let mut amt = 0 ;
588
594
let mut _user_payment_id = None :: < u64 > ; // For compatibility with 0.0.103 and earlier
589
595
read_tlv_fields ! ( reader, {
590
596
( 0 , payment_hash, required) ,
597
+ ( 1 , payment_metadata, option) ,
591
598
( 2 , payment_secret, option) ,
592
599
( 4 , amt, required) ,
593
600
( 6 , _user_payment_id, option) ,
@@ -596,8 +603,10 @@ impl MaybeReadable for Event {
596
603
let purpose = match payment_secret {
597
604
Some ( secret) => PaymentPurpose :: InvoicePayment {
598
605
payment_preimage,
606
+ payment_metadata,
599
607
payment_secret : secret
600
608
} ,
609
+ None if payment_metadata. is_some ( ) => return Err ( msgs:: DecodeError :: InvalidValue ) ,
601
610
None if payment_preimage. is_some ( ) => PaymentPurpose :: SpontaneousPayment ( payment_preimage. unwrap ( ) ) ,
602
611
None => return Err ( msgs:: DecodeError :: InvalidValue ) ,
603
612
} ;
0 commit comments