Skip to content

Commit 9c1d6ce

Browse files
f - Remove unreacable branches that can be reached
1 parent 711bd6e commit 9c1d6ce

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
@@ -2550,8 +2550,8 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
25502550
},
25512551
None => { insert_outbound_payment!(); },
25522552
}
2553-
} else { unreachable!(); }
2554-
} else { unreachable!(); }
2553+
} 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) })}
2554+
} else { return Err(APIError::ChannelUnavailable{err: format!("No such counterparty_node_id {}, as indicated by the short_to_id map", counterparty_node_id) })}
25552555
return Ok(());
25562556
};
25572557

@@ -3358,7 +3358,8 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
33583358
});
33593359
}
33603360
} else {
3361-
unreachable!();
3361+
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));
3362+
handle_errors.push((counterparty_node_id, err));
33623363
}
33633364
}
33643365
else {
@@ -3884,7 +3885,9 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
38843885
hash_map::Entry::Vacant(_) => (0x4000|10, Vec::new())
38853886
}
38863887
} else {
3887-
unreachable!();
3888+
// Peer must have been dropped before acquiring the per_peer_state
3889+
// read lock again in this function.
3890+
(0x4000|10, Vec::new())
38883891
}
38893892
};
38903893
self.fail_htlc_backwards_internal(channel_state,
@@ -4240,14 +4243,14 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
42404243
fn claim_funds_from_hop(&self, channel_state_lock: &mut MutexGuard<ChannelHolder>, prev_hop: HTLCPreviousHopData, payment_preimage: PaymentPreimage) -> ClaimFundsFromHop {
42414244
//TODO: Delay the claimed_funds relaying just like we do outbound relay!
42424245
let channel_state = &mut **channel_state_lock;
4246+
let per_peer_state = self.per_peer_state.read().unwrap();
42434247
let (counterparty_node_id, chan_id) = match channel_state.short_to_chan_info.get(&prev_hop.short_channel_id) {
42444248
Some((cp_id, chan_id)) => (cp_id.clone(), chan_id.clone()),
42454249
None => {
42464250
return ClaimFundsFromHop::PrevHopForceClosed
42474251
}
42484252
};
42494253

4250-
let per_peer_state = self.per_peer_state.read().unwrap();
42514254
if let Some(peer_state_mutex) = per_peer_state.get(&counterparty_node_id) {
42524255
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
42534256
let peer_state = &mut *peer_state_lock;
@@ -4299,7 +4302,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
42994302
return ClaimFundsFromHop::MonitorUpdateFail(counterparty_node_id, res, None);
43004303
},
43014304
}
4302-
} else { unreachable!(); }
4305+
} else { return ClaimFundsFromHop::PrevHopForceClosed }
43034306
} else { unreachable!(); }
43044307
}
43054308

@@ -4760,7 +4763,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
47604763
e.insert(chan);
47614764
}
47624765
}
4763-
} else { unreachable!() }
4766+
} 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), funding_msg.channel_id)) }
47644767
Ok(())
47654768
}
47664769

0 commit comments

Comments
 (0)