@@ -60,6 +60,8 @@ pub enum PaymentPurpose {
6060 /// [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
6161 /// [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
6262 payment_secret : PaymentSecret ,
63+ ///XXX
64+ payment_metadata : Option < Vec < u8 > > ,
6365 } ,
6466 /// Because this is a spontaneous payment, the payer generated their own preimage rather than us
6567 /// (the payee) providing a preimage.
@@ -462,17 +464,20 @@ impl Writeable for Event {
462464 1u8 . write ( writer) ?;
463465 let mut payment_secret = None ;
464466 let payment_preimage;
467+ let mut payment_metadata = None ;
465468 match & purpose {
466- PaymentPurpose :: InvoicePayment { payment_preimage : preimage, payment_secret : secret } => {
469+ PaymentPurpose :: InvoicePayment { payment_preimage : preimage, payment_secret : secret, payment_metadata : metadata } => {
467470 payment_secret = Some ( secret) ;
468471 payment_preimage = * preimage;
472+ payment_metadata = metadata. as_ref ( ) ;
469473 } ,
470474 PaymentPurpose :: SpontaneousPayment ( preimage) => {
471475 payment_preimage = Some ( * preimage) ;
472476 }
473477 }
474478 write_tlv_fields ! ( writer, {
475479 ( 0 , payment_hash, required) ,
480+ ( 1 , payment_metadata, option) ,
476481 ( 2 , payment_secret, option) ,
477482 ( 4 , amt, required) ,
478483 ( 6 , 0u64 , required) , // user_payment_id required for compatibility with 0.0.103 and earlier
@@ -584,10 +589,12 @@ impl MaybeReadable for Event {
584589 let mut payment_hash = PaymentHash ( [ 0 ; 32 ] ) ;
585590 let mut payment_preimage = None ;
586591 let mut payment_secret = None ;
592+ let mut payment_metadata = None ;
587593 let mut amt = 0 ;
588594 let mut _user_payment_id = None :: < u64 > ; // For compatibility with 0.0.103 and earlier
589595 read_tlv_fields ! ( reader, {
590596 ( 0 , payment_hash, required) ,
597+ ( 1 , payment_metadata, option) ,
591598 ( 2 , payment_secret, option) ,
592599 ( 4 , amt, required) ,
593600 ( 6 , _user_payment_id, option) ,
@@ -596,8 +603,10 @@ impl MaybeReadable for Event {
596603 let purpose = match payment_secret {
597604 Some ( secret) => PaymentPurpose :: InvoicePayment {
598605 payment_preimage,
606+ payment_metadata,
599607 payment_secret : secret
600608 } ,
609+ None if payment_metadata. is_some ( ) => return Err ( msgs:: DecodeError :: InvalidValue ) ,
601610 None if payment_preimage. is_some ( ) => PaymentPurpose :: SpontaneousPayment ( payment_preimage. unwrap ( ) ) ,
602611 None => return Err ( msgs:: DecodeError :: InvalidValue ) ,
603612 } ;
0 commit comments