@@ -118,9 +118,9 @@ impl RefundBuilder {
118118 }
119119
120120 let refund = RefundContents {
121- payer : PayerContents ( metadata) , metadata : None , description , absolute_expiry : None ,
122- issuer : None , paths : None , chain : None , amount_msats,
123- features : InvoiceRequestFeatures :: empty ( ) , quantity : None , payer_id, payer_note : None ,
121+ payer : PayerContents ( metadata) , description , absolute_expiry : None , issuer : None ,
122+ paths : None , chain : None , amount_msats, features : InvoiceRequestFeatures :: empty ( ) ,
123+ quantity : None , payer_id, payer_note : None ,
124124 } ;
125125
126126 Ok ( RefundBuilder { refund } )
@@ -229,7 +229,6 @@ pub struct Refund {
229229pub ( super ) struct RefundContents {
230230 payer : PayerContents ,
231231 // offer fields
232- metadata : Option < Vec < u8 > > ,
233232 description : String ,
234233 absolute_expiry : Option < Duration > ,
235234 issuer : Option < String > ,
@@ -395,7 +394,7 @@ impl RefundContents {
395394
396395 let offer = OfferTlvStreamRef {
397396 chains : None ,
398- metadata : self . metadata . as_ref ( ) ,
397+ metadata : None ,
399398 currency : None ,
400399 amount : None ,
401400 description : Some ( & self . description ) ,
@@ -497,6 +496,10 @@ impl TryFrom<RefundTlvStream> for RefundContents {
497496 Some ( metadata) => PayerContents ( metadata) ,
498497 } ;
499498
499+ if metadata. is_some ( ) {
500+ return Err ( SemanticError :: UnexpectedMetadata ) ;
501+ }
502+
500503 if chains. is_some ( ) {
501504 return Err ( SemanticError :: UnexpectedChain ) ;
502505 }
@@ -539,10 +542,9 @@ impl TryFrom<RefundTlvStream> for RefundContents {
539542 Some ( payer_id) => payer_id,
540543 } ;
541544
542- // TODO: Should metadata be included?
543545 Ok ( RefundContents {
544- payer, metadata , description, absolute_expiry, issuer, paths, chain, amount_msats,
545- features , quantity, payer_id, payer_note,
546+ payer, description, absolute_expiry, issuer, paths, chain, amount_msats, features ,
547+ quantity, payer_id, payer_note,
546548 } )
547549 }
548550}
@@ -949,6 +951,17 @@ mod tests {
949951 panic ! ( "error parsing refund: {:?}" , e) ;
950952 }
951953
954+ let metadata = vec ! [ 42 ; 32 ] ;
955+ let mut tlv_stream = refund. as_tlv_stream ( ) ;
956+ tlv_stream. 1 . metadata = Some ( & metadata) ;
957+
958+ match Refund :: try_from ( tlv_stream. to_bytes ( ) ) {
959+ Ok ( _) => panic ! ( "expected error" ) ,
960+ Err ( e) => {
961+ assert_eq ! ( e, ParseError :: InvalidSemantics ( SemanticError :: UnexpectedMetadata ) ) ;
962+ } ,
963+ }
964+
952965 let chains = vec ! [ ChainHash :: using_genesis_block( Network :: Testnet ) ] ;
953966 let mut tlv_stream = refund. as_tlv_stream ( ) ;
954967 tlv_stream. 1 . chains = Some ( & chains) ;
0 commit comments