@@ -642,11 +642,48 @@ impl_writeable_tlv_based_enum!(HTLCFailReasonRepr,
642642
643643impl  HTLCFailReason  { 
644644	pub ( super )  fn  reason ( failure_code :  u16 ,  data :  Vec < u8 > )  -> Self  { 
645+ 		const  BADONION :  u16  = 0x8000 ; 
646+ 		const  PERM :  u16  = 0x4000 ; 
647+ 		const  NODE :  u16  = 0x2000 ; 
648+ 		const  UPDATE :  u16  = 0x1000 ; 
649+ 
650+ 		     if  failure_code == 1   | PERM  {  debug_assert ! ( data. is_empty( ) )  } 
651+ 		else  if  failure_code == 2   | NODE  {  debug_assert ! ( data. is_empty( ) )  } 
652+ 		else  if  failure_code == 3   | PERM  | NODE  {  debug_assert ! ( data. is_empty( ) )  } 
653+ 		else  if  failure_code == 4   | BADONION  | PERM  {  debug_assert_eq ! ( data. len( ) ,  32 )  } 
654+ 		else  if  failure_code == 5   | BADONION  | PERM  {  debug_assert_eq ! ( data. len( ) ,  32 )  } 
655+ 		else  if  failure_code == 6   | BADONION  | PERM  {  debug_assert_eq ! ( data. len( ) ,  32 )  } 
656+ 		else  if  failure_code == 7   | UPDATE  { 
657+ 			debug_assert_eq ! ( data. len( )  - 2 ,  u16 :: from_be_bytes( data[ 0 ..2 ] . try_into( ) . unwrap( ) )  as  usize )  } 
658+ 		else  if  failure_code == 8   | PERM  {  debug_assert ! ( data. is_empty( ) )  } 
659+ 		else  if  failure_code == 9   | PERM  {  debug_assert ! ( data. is_empty( ) )  } 
660+ 		else  if  failure_code == 10  | PERM  {  debug_assert ! ( data. is_empty( ) )  } 
661+ 		else  if  failure_code == 11  | UPDATE  { 
662+ 			debug_assert_eq ! ( data. len( )  - 2 ,  u16 :: from_be_bytes( data[ 8 ..10 ] . try_into( ) . unwrap( ) )  as  usize )  } 
663+ 		else  if  failure_code == 12  | UPDATE  { 
664+ 			debug_assert_eq ! ( data. len( )  - 2 ,  u16 :: from_be_bytes( data[ 8 ..10 ] . try_into( ) . unwrap( ) )  as  usize )  } 
665+ 		else  if  failure_code == 13  | UPDATE  { 
666+ 			debug_assert_eq ! ( data. len( )  - 2 ,  u16 :: from_be_bytes( data[ 4 ..6 ] . try_into( ) . unwrap( ) )  as  usize )  } 
667+ 		else  if  failure_code == 14  | UPDATE  { 
668+ 			debug_assert_eq ! ( data. len( )  - 2 ,  u16 :: from_be_bytes( data[ 0 ..2 ] . try_into( ) . unwrap( ) )  as  usize )  } 
669+ 		else  if  failure_code == 15  | PERM  {  debug_assert_eq ! ( data. len( ) ,  12 )  } 
670+ 		else  if  failure_code == 18  {  debug_assert_eq ! ( data. len( ) ,  4 )  } 
671+ 		else  if  failure_code == 19  {  debug_assert_eq ! ( data. len( ) ,  8 )  } 
672+ 		else  if  failure_code == 20  | UPDATE  { 
673+ 			debug_assert_eq ! ( data. len( )  - 2 ,  u16 :: from_be_bytes( data[ 2 ..4 ] . try_into( ) . unwrap( ) )  as  usize )  } 
674+ 		else  if  failure_code == 21  {  debug_assert ! ( data. is_empty( ) )  } 
675+ 		else  if  failure_code == 22  | PERM  {  debug_assert ! ( data. len( )  <= 11 )  } 
676+ 		else  if  failure_code == 23  {  debug_assert ! ( data. is_empty( ) )  } 
677+ 		else  if  failure_code &  BADONION  != 0  { 
678+ 			// We set some bogus BADONION failure codes in test, so ignore unknown ones. 
679+ 		} 
680+ 		else  {  debug_assert ! ( false ,  "Unknown failure code: {}" ,  failure_code)  } 
681+ 
645682		Self ( HTLCFailReasonRepr :: Reason  {  failure_code,  data } ) 
646683	} 
647684
648685	pub ( super )  fn  from_failure_code ( failure_code :  u16 )  -> Self  { 
649- 		Self ( HTLCFailReasonRepr :: Reason   {   failure_code,  data :   Vec :: new ( )   } ) 
686+ 		Self :: reason ( failure_code,  Vec :: new ( ) ) 
650687	} 
651688
652689	pub ( super )  fn  from_msg ( msg :  & msgs:: UpdateFailHTLC )  -> Self  { 
0 commit comments