Skip to content

Commit f7b51d2

Browse files
f - Remove unreacable branches that can be reached
1 parent c37b984 commit f7b51d2

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2533,8 +2533,8 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
25332533
},
25342534
None => { insert_outbound_payment!(); },
25352535
}
2536-
} else { unreachable!(); }
2537-
} else { unreachable!(); }
2536+
} else { return Err(APIError::ChannelUnavailable{err: format!("No such channel for the counterparty_node_id {}, as indicated by the short_to_id map", counterparty_node_id) })}
2537+
} else { return Err(APIError::ChannelUnavailable{err: format!("No such counterparty_node_id {}, as indicated by the short_to_id map", counterparty_node_id) })}
25382538
return Ok(());
25392539
};
25402540

@@ -3218,7 +3218,8 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
32183218
});
32193219
}
32203220
} else {
3221-
unreachable!();
3221+
let err = Err(MsgHandleErrInternal::send_err_msg_no_close(format!("No such channel for the counterparty_node_id {}, as indicated by the short_to_id map", counterparty_node_id), forward_chan_id));
3222+
handle_errors.push((counterparty_node_id, err));
32223223
}
32233224
}
32243225
else {
@@ -3740,7 +3741,9 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
37403741
hash_map::Entry::Vacant(_) => (0x4000|10, Vec::new())
37413742
}
37423743
} else {
3743-
unreachable!();
3744+
// Peer must have been dropped before acquiring the per_peer_state
3745+
// read lock again in this function.
3746+
(0x4000|10, Vec::new())
37443747
}
37453748
};
37463749
self.fail_htlc_backwards_internal(channel_state,
@@ -4078,14 +4081,14 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
40784081
fn claim_funds_from_hop(&self, channel_state_lock: &mut MutexGuard<ChannelHolder>, prev_hop: HTLCPreviousHopData, payment_preimage: PaymentPreimage) -> ClaimFundsFromHop {
40794082
//TODO: Delay the claimed_funds relaying just like we do outbound relay!
40804083
let channel_state = &mut **channel_state_lock;
4084+
let per_peer_state = self.per_peer_state.read().unwrap();
40814085
let (counterparty_node_id, chan_id) = match channel_state.short_to_chan_info.get(&prev_hop.short_channel_id) {
40824086
Some((cp_id, chan_id)) => (cp_id.clone(), chan_id.clone()),
40834087
None => {
40844088
return ClaimFundsFromHop::PrevHopForceClosed
40854089
}
40864090
};
40874091

4088-
let per_peer_state = self.per_peer_state.read().unwrap();
40894092
if let Some(peer_state_mutex) = per_peer_state.get(&counterparty_node_id) {
40904093
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
40914094
let peer_state = &mut *peer_state_lock;
@@ -4137,7 +4140,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
41374140
return ClaimFundsFromHop::MonitorUpdateFail(counterparty_node_id, res, None);
41384141
},
41394142
}
4140-
} else { unreachable!(); }
4143+
} else { return ClaimFundsFromHop::PrevHopForceClosed }
41414144
} else { unreachable!(); }
41424145
}
41434146

@@ -4592,7 +4595,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
45924595
}
45934596
}
45944597
}
4595-
} else { unreachable!() }
4598+
} else { return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("The peer with node_id {}, was dropped before the signed funding tx was sent to the peer", counterparty_node_id), channel_id)) }
45964599
Ok(())
45974600
}
45984601

0 commit comments

Comments
 (0)