@@ -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.
@@ -417,17 +419,20 @@ impl Writeable for Event {
417
419
1u8 . write ( writer) ?;
418
420
let mut payment_secret = None ;
419
421
let payment_preimage;
422
+ let mut payment_metadata = None ;
420
423
match & purpose {
421
- PaymentPurpose :: InvoicePayment { payment_preimage : preimage, payment_secret : secret } => {
424
+ PaymentPurpose :: InvoicePayment { payment_preimage : preimage, payment_secret : secret, payment_metadata : metadata } => {
422
425
payment_secret = Some ( secret) ;
423
426
payment_preimage = * preimage;
427
+ payment_metadata = metadata. as_ref ( ) ;
424
428
} ,
425
429
PaymentPurpose :: SpontaneousPayment ( preimage) => {
426
430
payment_preimage = Some ( * preimage) ;
427
431
}
428
432
}
429
433
write_tlv_fields ! ( writer, {
430
434
( 0 , payment_hash, required) ,
435
+ ( 1 , payment_metadata, option) ,
431
436
( 2 , payment_secret, option) ,
432
437
( 4 , amt, required) ,
433
438
( 6 , 0u64 , required) , // user_payment_id required for compatibility with 0.0.103 and earlier
@@ -533,10 +538,12 @@ impl MaybeReadable for Event {
533
538
let mut payment_hash = PaymentHash ( [ 0 ; 32 ] ) ;
534
539
let mut payment_preimage = None ;
535
540
let mut payment_secret = None ;
541
+ let mut payment_metadata = None ;
536
542
let mut amt = 0 ;
537
543
let mut _user_payment_id = None :: < u64 > ; // For compatibility with 0.0.103 and earlier
538
544
read_tlv_fields ! ( reader, {
539
545
( 0 , payment_hash, required) ,
546
+ ( 1 , payment_metadata, option) ,
540
547
( 2 , payment_secret, option) ,
541
548
( 4 , amt, required) ,
542
549
( 6 , _user_payment_id, option) ,
@@ -545,8 +552,10 @@ impl MaybeReadable for Event {
545
552
let purpose = match payment_secret {
546
553
Some ( secret) => PaymentPurpose :: InvoicePayment {
547
554
payment_preimage,
555
+ payment_metadata,
548
556
payment_secret : secret
549
557
} ,
558
+ None if payment_metadata. is_some ( ) => return Err ( msgs:: DecodeError :: InvalidValue ) ,
550
559
None if payment_preimage. is_some ( ) => PaymentPurpose :: SpontaneousPayment ( payment_preimage. unwrap ( ) ) ,
551
560
None => return Err ( msgs:: DecodeError :: InvalidValue ) ,
552
561
} ;
0 commit comments