@@ -1886,8 +1886,9 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
18861886		} ; 
18871887
18881888		for  htlc_source in  failed_htlcs. drain ( ..)  { 
1889+ 			let  reason = HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ; 
18891890			let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( * counterparty_node_id) ,  channel_id :  * channel_id } ; 
1890- 			self . fail_htlc_backwards_internal ( htlc_source. 0 ,  & htlc_source. 1 ,  HTLCFailReason :: from_failure_code ( 0x4000  |  8 ) ,  receiver) ; 
1891+ 			self . fail_htlc_backwards_internal ( & htlc_source. 0 ,  & htlc_source. 1 ,  & reason ,  receiver) ; 
18911892		} 
18921893
18931894		let  _ = handle_error ! ( self ,  result,  * counterparty_node_id) ; 
@@ -1944,8 +1945,9 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
19441945		log_debug ! ( self . logger,  "Finishing force-closure of channel with {} HTLCs to fail" ,  failed_htlcs. len( ) ) ; 
19451946		for  htlc_source in  failed_htlcs. drain ( ..)  { 
19461947			let  ( source,  payment_hash,  counterparty_node_id,  channel_id)  = htlc_source; 
1948+ 			let  reason = HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ; 
19471949			let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( counterparty_node_id) ,  channel_id } ; 
1948- 			self . fail_htlc_backwards_internal ( source,  & payment_hash,  HTLCFailReason :: from_failure_code ( 0x4000  |  8 ) ,  receiver) ; 
1950+ 			self . fail_htlc_backwards_internal ( & source,  & payment_hash,  & reason ,  receiver) ; 
19491951		} 
19501952		if  let  Some ( ( funding_txo,  monitor_update) )  = monitor_update_option { 
19511953			// There isn't anything we can do if we get an update failure - we're already 
@@ -3152,7 +3154,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
31523154
31533155			let  failure_reason = HTLCFailReason :: from_failure_code ( 0x4000  | 10 ) ; 
31543156			let  destination = HTLCDestination :: UnknownNextHop  {  requested_forward_scid :  short_channel_id } ; 
3155- 			self . fail_htlc_backwards_internal ( htlc_source,  & payment. forward_info . payment_hash ,  failure_reason,  destination) ; 
3157+ 			self . fail_htlc_backwards_internal ( & htlc_source,  & payment. forward_info . payment_hash ,  & failure_reason,  destination) ; 
31563158		}  else  {  unreachable ! ( )  }  // Only `PendingHTLCRouting::Forward`s are intercepted 
31573159
31583160		Ok ( ( ) ) 
@@ -3609,7 +3611,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
36093611		} 
36103612
36113613		for  ( htlc_source,  payment_hash,  failure_reason,  destination)  in  failed_forwards. drain ( ..)  { 
3612- 			self . fail_htlc_backwards_internal ( htlc_source,  & payment_hash,  failure_reason,  destination) ; 
3614+ 			self . fail_htlc_backwards_internal ( & htlc_source,  & payment_hash,  & failure_reason,  destination) ; 
36133615		} 
36143616		self . forward_htlcs ( & mut  phantom_receives) ; 
36153617
@@ -3872,8 +3874,10 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
38723874			} ) ; 
38733875
38743876			for  htlc_source in  timed_out_mpp_htlcs. drain ( ..)  { 
3877+ 				let  source = HTLCSource :: PreviousHopData ( htlc_source. 0 . clone ( ) ) ; 
3878+ 				let  reason = HTLCFailReason :: from_failure_code ( 23 ) ; 
38753879				let  receiver = HTLCDestination :: FailedPayment  {  payment_hash :  htlc_source. 1  } ; 
3876- 				self . fail_htlc_backwards_internal ( HTLCSource :: PreviousHopData ( htlc_source . 0 . clone ( ) ) ,  & htlc_source. 1 ,  HTLCFailReason :: from_failure_code ( 23 ) ,  receiver) ; 
3880+ 				self . fail_htlc_backwards_internal ( & source ,  & htlc_source. 1 ,  & reason ,  receiver) ; 
38773881			} 
38783882
38793883			for  ( err,  counterparty_node_id)  in  handle_errors. drain ( ..)  { 
@@ -3908,10 +3912,10 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
39083912				let  mut  htlc_msat_height_data = byte_utils:: be64_to_array ( htlc. value ) . to_vec ( ) ; 
39093913				htlc_msat_height_data. extend_from_slice ( & byte_utils:: be32_to_array ( 
39103914						self . best_block . read ( ) . unwrap ( ) . height ( ) ) ) ; 
3911- 				self . fail_htlc_backwards_internal ( 
3912- 						 HTLCSource :: PreviousHopData ( htlc . prev_hop ) ,  payment_hash , 
3913- 						 HTLCFailReason :: reason ( 0x4000  |  15 ,  htlc_msat_height_data ) , 
3914- 						 HTLCDestination :: FailedPayment   {   payment_hash :   * payment_hash  } ) ; 
3915+ 				let  source =  HTLCSource :: PreviousHopData ( htlc . prev_hop ) ; 
3916+ 				let  reason =  HTLCFailReason :: reason ( 0x4000  |  15 ,  htlc_msat_height_data ) ; 
3917+ 				let  receiver =  HTLCDestination :: FailedPayment   {   payment_hash :   * payment_hash  } ; 
3918+ 				self . fail_htlc_backwards_internal ( & source ,   & payment_hash,   & reason ,  receiver ) ; 
39153919			} 
39163920		} 
39173921	} 
@@ -3979,14 +3983,15 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
39793983					hash_map:: Entry :: Vacant ( _)  => ( 0x4000 |10 ,  Vec :: new ( ) ) 
39803984				} ; 
39813985
3986+ 			let  reason = HTLCFailReason :: reason ( failure_code,  onion_failure_data) ; 
39823987			let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( counterparty_node_id. clone ( ) ) ,  channel_id } ; 
3983- 			self . fail_htlc_backwards_internal ( htlc_src,  & payment_hash,  HTLCFailReason :: reason ( failure_code ,  onion_failure_data ) ,  receiver) ; 
3988+ 			self . fail_htlc_backwards_internal ( & htlc_src,  & payment_hash,  & reason,  receiver) ; 
39843989		} 
39853990	} 
39863991
39873992	/// Fails an HTLC backwards to the sender of it to us. 
39883993/// Note that we do not assume that channels corresponding to failed HTLCs are still available. 
3989- fn  fail_htlc_backwards_internal ( & self ,  source :  HTLCSource ,  payment_hash :  & PaymentHash ,  onion_error :  HTLCFailReason , destination :  HTLCDestination )  { 
3994+ fn  fail_htlc_backwards_internal ( & self ,  source :  & HTLCSource ,  payment_hash :  & PaymentHash ,  onion_error :  & HTLCFailReason ,   destination :  HTLCDestination )  { 
39903995		#[ cfg( debug_assertions) ]  
39913996		{ 
39923997			// Ensure that the `channel_state` lock is not held when calling this function. 
@@ -4005,13 +4010,13 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
40054010		// from block_connected which may run during initialization prior to the chain_monitor 
40064011		// being fully configured. See the docs for `ChannelManagerReadArgs` for more. 
40074012		match  source { 
4008- 			HTLCSource :: OutboundRoute  {  ref  path,  session_priv,  payment_id,  ref  payment_params,  .. }  => { 
4013+ 			HTLCSource :: OutboundRoute  {  ref  path,  ref   session_priv,   ref  payment_id,  ref  payment_params,  .. }  => { 
40094014				let  mut  session_priv_bytes = [ 0 ;  32 ] ; 
40104015				session_priv_bytes. copy_from_slice ( & session_priv[ ..] ) ; 
40114016				let  mut  outbounds = self . pending_outbound_payments . lock ( ) . unwrap ( ) ; 
40124017				let  mut  all_paths_failed = false ; 
40134018				let  mut  full_failure_ev = None ; 
4014- 				if  let  hash_map:: Entry :: Occupied ( mut  payment)  = outbounds. entry ( payment_id)  { 
4019+ 				if  let  hash_map:: Entry :: Occupied ( mut  payment)  = outbounds. entry ( * payment_id)  { 
40154020					if  !payment. get_mut ( ) . remove ( & session_priv_bytes,  Some ( & path) )  { 
40164021						log_trace ! ( self . logger,  "Received duplicative fail for HTLC with payment_hash {}" ,  log_bytes!( payment_hash. 0 ) ) ; 
40174022						return ; 
@@ -4024,7 +4029,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
40244029						all_paths_failed = true ; 
40254030						if  payment. get ( ) . abandoned ( )  { 
40264031							full_failure_ev = Some ( events:: Event :: PaymentFailed  { 
4027- 								payment_id, 
4032+ 								payment_id :   * payment_id , 
40284033								payment_hash :  payment. get ( ) . payment_hash ( ) . expect ( "PendingOutboundPayments::RetriesExceeded always has a payment hash set" ) , 
40294034							} ) ; 
40304035							payment. remove ( ) ; 
@@ -4054,13 +4059,13 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
40544059						if  self . payment_is_probe ( payment_hash,  & payment_id)  { 
40554060							if  !payment_retryable { 
40564061								events:: Event :: ProbeSuccessful  { 
4057- 									payment_id, 
4062+ 									payment_id :   * payment_id , 
40584063									payment_hash :  payment_hash. clone ( ) , 
40594064									path :  path. clone ( ) , 
40604065								} 
40614066							}  else  { 
40624067								events:: Event :: ProbeFailed  { 
4063- 									payment_id, 
4068+ 									payment_id :   * payment_id , 
40644069									payment_hash :  payment_hash. clone ( ) , 
40654070									path :  path. clone ( ) , 
40664071									short_channel_id, 
@@ -4074,7 +4079,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
40744079								retry. as_mut ( ) . map ( |r| r. payment_params . previously_failed_channels . push ( scid) ) ; 
40754080							} 
40764081							events:: Event :: PaymentPathFailed  { 
4077- 								payment_id :  Some ( payment_id) , 
4082+ 								payment_id :  Some ( * payment_id) , 
40784083								payment_hash :  payment_hash. clone ( ) , 
40794084								payment_failed_permanently :  !payment_retryable, 
40804085								network_update, 
@@ -4107,14 +4112,14 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
41074112
41084113						if  self . payment_is_probe ( payment_hash,  & payment_id)  { 
41094114							events:: Event :: ProbeFailed  { 
4110- 								payment_id, 
4115+ 								payment_id :   * payment_id , 
41114116								payment_hash :  payment_hash. clone ( ) , 
41124117								path :  path. clone ( ) , 
41134118								short_channel_id :  Some ( scid) , 
41144119							} 
41154120						}  else  { 
41164121							events:: Event :: PaymentPathFailed  { 
4117- 								payment_id :  Some ( payment_id) , 
4122+ 								payment_id :  Some ( * payment_id) , 
41184123								payment_hash :  payment_hash. clone ( ) , 
41194124								payment_failed_permanently :  false , 
41204125								network_update :  None , 
@@ -4134,22 +4139,22 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
41344139				pending_events. push ( path_failure) ; 
41354140				if  let  Some ( ev)  = full_failure_ev {  pending_events. push ( ev) ;  } 
41364141			} , 
4137- 			HTLCSource :: PreviousHopData ( HTLCPreviousHopData  {  short_channel_id,  htlc_id,  incoming_packet_shared_secret,  phantom_shared_secret,  outpoint } )  => { 
4142+ 			HTLCSource :: PreviousHopData ( HTLCPreviousHopData  {  ref   short_channel_id,  ref   htlc_id,  ref   incoming_packet_shared_secret,  ref   phantom_shared_secret,   ref  outpoint } )  => { 
41384143				let  err_packet = match  onion_error { 
4139- 					HTLCFailReason :: Reason  {  failure_code,  data }  => { 
4144+ 					HTLCFailReason :: Reason  {  ref   failure_code,   ref  data }  => { 
41404145						log_trace ! ( self . logger,  "Failing HTLC with payment_hash {} backwards from us with code {}" ,  log_bytes!( payment_hash. 0 ) ,  failure_code) ; 
41414146						if  let  Some ( phantom_ss)  = phantom_shared_secret { 
4142- 							let  phantom_packet = onion_utils:: build_failure_packet ( & phantom_ss,  failure_code,  & data[ ..] ) . encode ( ) ; 
4143- 							let  encrypted_phantom_packet = onion_utils:: encrypt_failure_packet ( & phantom_ss,  & phantom_packet) ; 
4144- 							onion_utils:: encrypt_failure_packet ( & incoming_packet_shared_secret,  & encrypted_phantom_packet. data [ ..] ) 
4147+ 							let  phantom_packet = onion_utils:: build_failure_packet ( phantom_ss,  * failure_code,  & data[ ..] ) . encode ( ) ; 
4148+ 							let  encrypted_phantom_packet = onion_utils:: encrypt_failure_packet ( phantom_ss,  & phantom_packet) ; 
4149+ 							onion_utils:: encrypt_failure_packet ( incoming_packet_shared_secret,  & encrypted_phantom_packet. data [ ..] ) 
41454150						}  else  { 
4146- 							let  packet = onion_utils:: build_failure_packet ( & incoming_packet_shared_secret,  failure_code,  & data[ ..] ) . encode ( ) ; 
4147- 							onion_utils:: encrypt_failure_packet ( & incoming_packet_shared_secret,  & packet) 
4151+ 							let  packet = onion_utils:: build_failure_packet ( incoming_packet_shared_secret,  * failure_code,  & data[ ..] ) . encode ( ) ; 
4152+ 							onion_utils:: encrypt_failure_packet ( incoming_packet_shared_secret,  & packet) 
41484153						} 
41494154					} , 
41504155					HTLCFailReason :: LightningError  {  err }  => { 
41514156						log_trace ! ( self . logger,  "Failing HTLC with payment_hash {} backwards with pre-built LightningError" ,  log_bytes!( payment_hash. 0 ) ) ; 
4152- 						onion_utils:: encrypt_failure_packet ( & incoming_packet_shared_secret,  & err. data ) 
4157+ 						onion_utils:: encrypt_failure_packet ( incoming_packet_shared_secret,  & err. data ) 
41534158					} 
41544159				} ; 
41554160
@@ -4158,12 +4163,12 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
41584163				if  forward_htlcs. is_empty ( )  { 
41594164					forward_event = Some ( Duration :: from_millis ( MIN_HTLC_RELAY_HOLDING_CELL_MILLIS ) ) ; 
41604165				} 
4161- 				match  forward_htlcs. entry ( short_channel_id)  { 
4166+ 				match  forward_htlcs. entry ( * short_channel_id)  { 
41624167					hash_map:: Entry :: Occupied ( mut  entry)  => { 
4163- 						entry. get_mut ( ) . push ( HTLCForwardInfo :: FailHTLC  {  htlc_id,  err_packet } ) ; 
4168+ 						entry. get_mut ( ) . push ( HTLCForwardInfo :: FailHTLC  {  htlc_id :   * htlc_id ,  err_packet } ) ; 
41644169					} , 
41654170					hash_map:: Entry :: Vacant ( entry)  => { 
4166- 						entry. insert ( vec ! ( HTLCForwardInfo :: FailHTLC  {  htlc_id,  err_packet } ) ) ; 
4171+ 						entry. insert ( vec ! ( HTLCForwardInfo :: FailHTLC  {  htlc_id:   * htlc_id ,  err_packet } ) ) ; 
41674172					} 
41684173				} 
41694174				mem:: drop ( forward_htlcs) ; 
@@ -4175,7 +4180,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
41754180				} 
41764181				pending_events. push ( events:: Event :: HTLCHandlingFailed  { 
41774182					prev_channel_id :  outpoint. to_channel_id ( ) , 
4178- 					failed_next_destination :  destination
4183+ 					failed_next_destination :  destination, 
41794184				} ) ; 
41804185			} , 
41814186		} 
@@ -4304,10 +4309,10 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
43044309					let  mut  htlc_msat_height_data = byte_utils:: be64_to_array ( htlc. value ) . to_vec ( ) ; 
43054310					htlc_msat_height_data. extend_from_slice ( & byte_utils:: be32_to_array ( 
43064311						self . best_block . read ( ) . unwrap ( ) . height ( ) ) ) ; 
4307- 					self . fail_htlc_backwards_internal ( 
4308- 						 HTLCSource :: PreviousHopData ( htlc . prev_hop ) ,   & payment_hash , 
4309- 						 HTLCFailReason :: reason ( 0x4000  |  15 ,  htlc_msat_height_data ) , 
4310- 						 HTLCDestination :: FailedPayment   {   payment_hash  }   ) ; 
4312+ 					let  source =  HTLCSource :: PreviousHopData ( htlc . prev_hop ) ; 
4313+ 					let  reason =  HTLCFailReason :: reason ( 0x4000  |  15 ,  htlc_msat_height_data ) ; 
4314+ 					let  receiver =  HTLCDestination :: FailedPayment   {  payment_hash  } ; 
4315+ 					self . fail_htlc_backwards_internal ( & source ,   & payment_hash,   & reason ,  receiver ) ; 
43114316				} 
43124317			} 
43134318
@@ -4631,7 +4636,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
46314636		self . finalize_claims ( finalized_claims) ; 
46324637		for  failure in  pending_failures. drain ( ..)  { 
46334638			let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( counterparty_node_id) ,  channel_id :  funding_txo. to_channel_id ( )  } ; 
4634- 			self . fail_htlc_backwards_internal ( failure. 0 ,  & failure. 1 ,  failure. 2 ,  receiver) ; 
4639+ 			self . fail_htlc_backwards_internal ( & failure. 0 ,  & failure. 1 ,  & failure. 2 ,  receiver) ; 
46354640		} 
46364641	} 
46374642
@@ -4999,7 +5004,8 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
49995004		} ; 
50005005		for  htlc_source in  dropped_htlcs. drain ( ..)  { 
50015006			let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( counterparty_node_id. clone ( ) ) ,  channel_id :  msg. channel_id  } ; 
5002- 			self . fail_htlc_backwards_internal ( htlc_source. 0 ,  & htlc_source. 1 ,  HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ,  receiver) ; 
5007+ 			let  reason = HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ; 
5008+ 			self . fail_htlc_backwards_internal ( & htlc_source. 0 ,  & htlc_source. 1 ,  & reason,  receiver) ; 
50035009		} 
50045010
50055011		let  _ = handle_error ! ( self ,  result,  * counterparty_node_id) ; 
@@ -5270,7 +5276,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
52705276			} 
52715277
52725278			for  ( htlc_source,  payment_hash,  failure_reason,  destination)  in  failed_intercept_forwards. drain ( ..)  { 
5273- 				self . fail_htlc_backwards_internal ( htlc_source,  & payment_hash,  failure_reason,  destination) ; 
5279+ 				self . fail_htlc_backwards_internal ( & htlc_source,  & payment_hash,  & failure_reason,  destination) ; 
52745280			} 
52755281
52765282			if  !new_intercept_events. is_empty ( )  { 
@@ -5345,7 +5351,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
53455351			{ 
53465352				for  failure in  pending_failures. drain ( ..)  { 
53475353					let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( * counterparty_node_id) ,  channel_id :  channel_outpoint. to_channel_id ( )  } ; 
5348- 					self . fail_htlc_backwards_internal ( failure. 0 ,  & failure. 1 ,  failure. 2 ,  receiver) ; 
5354+ 					self . fail_htlc_backwards_internal ( & failure. 0 ,  & failure. 1 ,  & failure. 2 ,  receiver) ; 
53495355				} 
53505356				self . forward_htlcs ( & mut  [ ( short_channel_id,  channel_outpoint,  user_channel_id,  pending_forwards) ] ) ; 
53515357				self . finalize_claims ( finalized_claim_htlcs) ; 
@@ -5505,7 +5511,8 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
55055511						}  else  { 
55065512							log_trace ! ( self . logger,  "Failing HTLC with hash {} from our monitor" ,  log_bytes!( htlc_update. payment_hash. 0 ) ) ; 
55075513							let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  counterparty_node_id,  channel_id :  funding_outpoint. to_channel_id ( )  } ; 
5508- 							self . fail_htlc_backwards_internal ( htlc_update. source ,  & htlc_update. payment_hash ,  HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ,  receiver) ; 
5514+ 							let  reason = HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ; 
5515+ 							self . fail_htlc_backwards_internal ( & htlc_update. source ,  & htlc_update. payment_hash ,  & reason,  receiver) ; 
55095516						} 
55105517					} , 
55115518					MonitorEvent :: CommitmentTxConfirmed ( funding_outpoint)  |
@@ -6315,7 +6322,7 @@ where
63156322		self . handle_init_event_channel_failures ( failed_channels) ; 
63166323
63176324		for  ( source,  payment_hash,  reason,  destination)  in  timed_out_htlcs. drain ( ..)  { 
6318- 			self . fail_htlc_backwards_internal ( source,  & payment_hash,  reason,  destination) ; 
6325+ 			self . fail_htlc_backwards_internal ( & source,  & payment_hash,  & reason,  destination) ; 
63196326		} 
63206327	} 
63216328
@@ -7802,7 +7809,8 @@ impl<'a, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref>
78027809		for  htlc_source in  failed_htlcs. drain ( ..)  { 
78037810			let  ( source,  payment_hash,  counterparty_node_id,  channel_id)  = htlc_source; 
78047811			let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( counterparty_node_id) ,  channel_id } ; 
7805- 			channel_manager. fail_htlc_backwards_internal ( source,  & payment_hash,  HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ,  receiver) ; 
7812+ 			let  reason = HTLCFailReason :: from_failure_code ( 0x4000  | 8 ) ; 
7813+ 			channel_manager. fail_htlc_backwards_internal ( & source,  & payment_hash,  & reason,  receiver) ; 
78067814		} 
78077815
78087816		//TODO: Broadcast channel update for closed channels, but only after we've made a 
0 commit comments