@@ -1517,18 +1517,6 @@ macro_rules! emit_channel_ready_event {
15171517	} 
15181518} 
15191519
1520- macro_rules!  post_handle_chan_restoration { 
1521- 	( $self:  ident,  $locked_res:  expr,  $counterparty_node_id:  expr)  => {  { 
1522- 		let  ( htlc_forwards,  res)  = $locked_res; 
1523- 
1524- 		let  _ = handle_error!( $self,  res,  * $counterparty_node_id) ; 
1525- 
1526- 		if  let  Some ( forwards)  = htlc_forwards { 
1527- 			$self. forward_htlcs( & mut  [ forwards] [ ..] ) ; 
1528- 		} 
1529- 	}  } 
1530- } 
1531- 
15321520impl < M :  Deref ,  T :  Deref ,  K :  Deref ,  F :  Deref ,  L :  Deref >  ChannelManager < M ,  T ,  K ,  F ,  L > 
15331521	where  M :: Target :  chain:: Watch < <K :: Target  as  KeysInterface >:: Signer > , 
15341522        T :: Target :  BroadcasterInterface , 
@@ -4381,69 +4369,66 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
43814369		commitment_update :  Option < msgs:: CommitmentUpdate > ,  order :  RAACommitmentOrder , 
43824370		pending_forwards :  Vec < ( PendingHTLCInfo ,  u64 ) > ,  funding_broadcastable :  Option < Transaction > , 
43834371		channel_ready :  Option < msgs:: ChannelReady > ,  announcement_sigs :  Option < msgs:: AnnouncementSignatures > ) 
4384- 	-> ( Option < ( u64 ,  OutPoint ,  Vec < ( PendingHTLCInfo ,  u64 ) > ) > ,   Result < ( ) ,   MsgHandleErrInternal > )  { 
4372+ 	-> Option < ( u64 ,  OutPoint ,  Vec < ( PendingHTLCInfo ,  u64 ) > ) >  { 
43854373		let  mut  htlc_forwards = None ; 
43864374
43874375		let  counterparty_node_id = channel. get_counterparty_node_id ( ) ; 
4388- 		let  res = loop  { 
4389- 			if  !pending_forwards. is_empty ( )  { 
4390- 				htlc_forwards = Some ( ( channel. get_short_channel_id ( ) . unwrap_or ( channel. outbound_scid_alias ( ) ) , 
4391- 					channel. get_funding_txo ( ) . unwrap ( ) ,  pending_forwards) ) ; 
4392- 			} 
4376+ 		if  !pending_forwards. is_empty ( )  { 
4377+ 			htlc_forwards = Some ( ( channel. get_short_channel_id ( ) . unwrap_or ( channel. outbound_scid_alias ( ) ) , 
4378+ 				channel. get_funding_txo ( ) . unwrap ( ) ,  pending_forwards) ) ; 
4379+ 		} 
43934380
4394- 			if  let  Some ( msg)  = channel_ready { 
4395- 				send_channel_ready ! ( self ,  pending_msg_events,  channel,  msg) ; 
4396- 			} 
4397- 			if  let  Some ( msg)  = announcement_sigs { 
4398- 				pending_msg_events. push ( events:: MessageSendEvent :: SendAnnouncementSignatures  { 
4381+ 		if  let  Some ( msg)  = channel_ready { 
4382+ 			send_channel_ready ! ( self ,  pending_msg_events,  channel,  msg) ; 
4383+ 		} 
4384+ 		if  let  Some ( msg)  = announcement_sigs { 
4385+ 			pending_msg_events. push ( events:: MessageSendEvent :: SendAnnouncementSignatures  { 
4386+ 				node_id :  counterparty_node_id, 
4387+ 				msg, 
4388+ 			} ) ; 
4389+ 		} 
4390+ 
4391+ 		emit_channel_ready_event ! ( self ,  channel) ; 
4392+ 
4393+ 		macro_rules!  handle_cs {  ( )  => { 
4394+ 			if  let  Some ( update)  = commitment_update { 
4395+ 				pending_msg_events. push( events:: MessageSendEvent :: UpdateHTLCs  { 
43994396					node_id:  counterparty_node_id, 
4400- 					msg , 
4397+ 					updates :  update , 
44014398				} ) ; 
44024399			} 
4403- 
4404- 			emit_channel_ready_event ! ( self ,  channel) ; 
4405- 
4406- 			macro_rules!  handle_cs {  ( )  => { 
4407- 				if  let  Some ( update)  = commitment_update { 
4408- 					pending_msg_events. push( events:: MessageSendEvent :: UpdateHTLCs  { 
4409- 						node_id:  counterparty_node_id, 
4410- 						updates:  update, 
4411- 					} ) ; 
4412- 				} 
4413- 			}  } 
4414- 			macro_rules!  handle_raa {  ( )  => { 
4415- 				if  let  Some ( revoke_and_ack)  = raa { 
4416- 					pending_msg_events. push( events:: MessageSendEvent :: SendRevokeAndACK  { 
4417- 						node_id:  counterparty_node_id, 
4418- 						msg:  revoke_and_ack, 
4419- 					} ) ; 
4420- 				} 
4421- 			}  } 
4422- 			match  order { 
4423- 				RAACommitmentOrder :: CommitmentFirst  => { 
4424- 					handle_cs ! ( ) ; 
4425- 					handle_raa ! ( ) ; 
4426- 				} , 
4427- 				RAACommitmentOrder :: RevokeAndACKFirst  => { 
4428- 					handle_raa ! ( ) ; 
4429- 					handle_cs ! ( ) ; 
4430- 				} , 
4400+ 		}  } 
4401+ 		macro_rules!  handle_raa {  ( )  => { 
4402+ 			if  let  Some ( revoke_and_ack)  = raa { 
4403+ 				pending_msg_events. push( events:: MessageSendEvent :: SendRevokeAndACK  { 
4404+ 					node_id:  counterparty_node_id, 
4405+ 					msg:  revoke_and_ack, 
4406+ 				} ) ; 
44314407			} 
4408+ 		}  } 
4409+ 		match  order { 
4410+ 			RAACommitmentOrder :: CommitmentFirst  => { 
4411+ 				handle_cs ! ( ) ; 
4412+ 				handle_raa ! ( ) ; 
4413+ 			} , 
4414+ 			RAACommitmentOrder :: RevokeAndACKFirst  => { 
4415+ 				handle_raa ! ( ) ; 
4416+ 				handle_cs ! ( ) ; 
4417+ 			} , 
4418+ 		} 
44324419
4433- 			if  let  Some ( tx)  = funding_broadcastable { 
4434- 				log_info ! ( self . logger,  "Broadcasting funding transaction with txid {}" ,  tx. txid( ) ) ; 
4435- 				self . tx_broadcaster . broadcast_transaction ( & tx) ; 
4436- 			} 
4437- 			break  Ok ( ( ) ) ; 
4438- 		} ; 
4420+ 		if  let  Some ( tx)  = funding_broadcastable { 
4421+ 			log_info ! ( self . logger,  "Broadcasting funding transaction with txid {}" ,  tx. txid( ) ) ; 
4422+ 			self . tx_broadcaster . broadcast_transaction ( & tx) ; 
4423+ 		} 
44394424
4440- 		( htlc_forwards,  res ) 
4425+ 		htlc_forwards
44414426	} 
44424427
44434428	fn  channel_monitor_updated ( & self ,  funding_txo :  & OutPoint ,  highest_applied_update_id :  u64 )  { 
44444429		let  _persistence_guard = PersistenceNotifierGuard :: notify_on_drop ( & self . total_consistency_lock ,  & self . persistence_notifier ) ; 
44454430
4446- 		let  chan_restoration_res ; 
4431+ 		let  htlc_forwards ; 
44474432		let  ( mut  pending_failures,  finalized_claims,  counterparty_node_id)  = { 
44484433			let  mut  channel_lock = self . channel_state . lock ( ) . unwrap ( ) ; 
44494434			let  channel_state = & mut  * channel_lock; 
@@ -4470,14 +4455,16 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
44704455					} ) 
44714456				}  else  {  None  } 
44724457			}  else  {  None  } ; 
4473- 			chan_restoration_res  = self . handle_channel_resumption ( & mut  channel_state. pending_msg_events ,  channel. get_mut ( ) ,  updates. raa ,  updates. commitment_update ,  updates. order ,  updates. accepted_htlcs ,  updates. funding_broadcastable ,  updates. channel_ready ,  updates. announcement_sigs ) ; 
4458+ 			htlc_forwards  = self . handle_channel_resumption ( & mut  channel_state. pending_msg_events ,  channel. get_mut ( ) ,  updates. raa ,  updates. commitment_update ,  updates. order ,  updates. accepted_htlcs ,  updates. funding_broadcastable ,  updates. channel_ready ,  updates. announcement_sigs ) ; 
44744459			if  let  Some ( upd)  = channel_update { 
44754460				channel_state. pending_msg_events . push ( upd) ; 
44764461			} 
44774462
44784463			( updates. failed_htlcs ,  updates. finalized_claimed_htlcs ,  counterparty_node_id) 
44794464		} ; 
4480- 		post_handle_chan_restoration ! ( self ,  chan_restoration_res,  & counterparty_node_id) ; 
4465+ 		if  let  Some ( forwards)  = htlc_forwards { 
4466+ 			self . forward_htlcs ( & mut  [ forwards] [ ..] ) ; 
4467+ 		} 
44814468		self . finalize_claims ( finalized_claims) ; 
44824469		for  failure in  pending_failures. drain ( ..)  { 
44834470			let  receiver = HTLCDestination :: NextHopChannel  {  node_id :  Some ( counterparty_node_id) ,  channel_id :  funding_txo. to_channel_id ( )  } ; 
@@ -5228,7 +5215,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
52285215	} 
52295216
52305217	fn  internal_channel_reestablish ( & self ,  counterparty_node_id :  & PublicKey ,  msg :  & msgs:: ChannelReestablish )  -> Result < ( ) ,  MsgHandleErrInternal >  { 
5231- 		let  chan_restoration_res ; 
5218+ 		let  htlc_forwards ; 
52325219		let  need_lnd_workaround = { 
52335220			let  mut  channel_state_lock = self . channel_state . lock ( ) . unwrap ( ) ; 
52345221			let  channel_state = & mut  * channel_state_lock; 
@@ -5263,7 +5250,7 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
52635250						} 
52645251					} 
52655252					let  need_lnd_workaround = chan. get_mut ( ) . workaround_lnd_bug_4006 . take ( ) ; 
5266- 					chan_restoration_res  = self . handle_channel_resumption ( 
5253+ 					htlc_forwards  = self . handle_channel_resumption ( 
52675254						& mut  channel_state. pending_msg_events ,  chan. get_mut ( ) ,  responses. raa ,  responses. commitment_update ,  responses. order , 
52685255						Vec :: new ( ) ,  None ,  responses. channel_ready ,  responses. announcement_sigs ) ; 
52695256					if  let  Some ( upd)  = channel_update { 
@@ -5274,7 +5261,10 @@ impl<M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelManager<M, T, K, F
52745261				hash_map:: Entry :: Vacant ( _)  => return  Err ( MsgHandleErrInternal :: send_err_msg_no_close ( "Failed to find corresponding channel" . to_owned ( ) ,  msg. channel_id ) ) 
52755262			} 
52765263		} ; 
5277- 		post_handle_chan_restoration ! ( self ,  chan_restoration_res,  counterparty_node_id) ; 
5264+ 
5265+ 		if  let  Some ( forwards)  = htlc_forwards { 
5266+ 			self . forward_htlcs ( & mut  [ forwards] [ ..] ) ; 
5267+ 		} 
52785268
52795269		if  let  Some ( channel_ready_msg)  = need_lnd_workaround { 
52805270			self . internal_channel_ready ( counterparty_node_id,  & channel_ready_msg) ?; 
0 commit comments