lnpeer: favor schedule_force_closing wrapper
This commit is contained in:
@@ -298,7 +298,7 @@ class Peer(Logger):
|
||||
# MUST fail the channel(s) referred to by the error message:
|
||||
# we may violate this with force_close_channel
|
||||
if force_close_channel:
|
||||
for cid self._get_channel_ids(channel_id):
|
||||
for cid in self._get_channel_ids(channel_id):
|
||||
self.schedule_force_closing(channel_id)
|
||||
raise GracefulDisconnect
|
||||
|
||||
@@ -1035,6 +1035,7 @@ class Peer(Logger):
|
||||
my_current_per_commitment_point=latest_point)
|
||||
|
||||
def schedule_force_closing(self, channel_id: bytes):
|
||||
""" wrapper of lnworker's method, that raises if channel is not with this peer """
|
||||
channels_with_peer = list(self.channels.keys())
|
||||
channels_with_peer.extend(self.temp_id_to_id.values())
|
||||
if channel_id not in channels_with_peer:
|
||||
@@ -1138,7 +1139,7 @@ class Peer(Logger):
|
||||
fut.set_exception(RemoteMisbehaving("remote ahead of us"))
|
||||
elif we_are_ahead:
|
||||
self.logger.warning(f"channel_reestablish ({chan.get_id_for_log()}): we are ahead of remote! trying to force-close.")
|
||||
self.lnworker.schedule_force_closing(chan.channel_id)
|
||||
self.schedule_force_closing(chan.channel_id)
|
||||
fut.set_exception(RemoteMisbehaving("we are ahead of remote"))
|
||||
else:
|
||||
# all good
|
||||
@@ -1468,7 +1469,7 @@ class Peer(Logger):
|
||||
self.logger.info(f"on_update_fail_malformed_htlc. chan {chan.get_id_for_log()}. "
|
||||
f"htlc_id {htlc_id}. failure_code={failure_code}")
|
||||
if failure_code & OnionFailureCodeMetaFlag.BADONION == 0:
|
||||
self.lnworker.schedule_force_closing(chan.channel_id)
|
||||
self.schedule_force_closing(chan.channel_id)
|
||||
raise RemoteMisbehaving(f"received update_fail_malformed_htlc with unexpected failure code: {failure_code}")
|
||||
reason = OnionRoutingFailure(code=failure_code, data=payload["sha256_of_onion"])
|
||||
chan.receive_fail_htlc(htlc_id, error_bytes=None, reason=reason)
|
||||
@@ -1490,7 +1491,7 @@ class Peer(Logger):
|
||||
if chan.get_state() != ChannelState.OPEN:
|
||||
raise RemoteMisbehaving(f"received update_add_htlc while chan.get_state() != OPEN. state was {chan.get_state()!r}")
|
||||
if cltv_expiry > bitcoin.NLOCKTIME_BLOCKHEIGHT_MAX:
|
||||
self.lnworker.schedule_force_closing(chan.channel_id)
|
||||
self.schedule_force_closing(chan.channel_id)
|
||||
raise RemoteMisbehaving(f"received update_add_htlc with cltv_expiry > BLOCKHEIGHT_MAX. value was {cltv_expiry}")
|
||||
# add htlc
|
||||
chan.receive_htlc(htlc, onion_packet)
|
||||
@@ -1989,7 +1990,7 @@ class Peer(Logger):
|
||||
try:
|
||||
cs_payload = await self.wait_for_message('closing_signed', chan.channel_id)
|
||||
except asyncio.exceptions.TimeoutError:
|
||||
self.lnworker.schedule_force_closing(chan.channel_id)
|
||||
self.schedule_force_closing(chan.channel_id)
|
||||
raise Exception("closing_signed not received, force closing.")
|
||||
their_fee = cs_payload['fee_satoshis']
|
||||
their_fee_range = cs_payload['closing_signed_tlvs'].get('fee_range')
|
||||
@@ -2042,14 +2043,14 @@ class Peer(Logger):
|
||||
if overlap_min > overlap_max:
|
||||
# TODO: the receiving node should first send a warning, and fail the channel
|
||||
# only if it doesn't receive a satisfying fee_range after a reasonable amount of time
|
||||
self.lnworker.schedule_force_closing(chan.channel_id)
|
||||
self.schedule_force_closing(chan.channel_id)
|
||||
raise Exception("There is no overlap between between their and our fee range.")
|
||||
# otherwise, if it is the funder
|
||||
if is_initiator:
|
||||
# if fee_satoshis is not in the overlap between the sent and received fee_range:
|
||||
if not (overlap_min <= their_fee <= overlap_max):
|
||||
# MUST fail the channel
|
||||
self.lnworker.schedule_force_closing(chan.channel_id)
|
||||
self.schedule_force_closing(chan.channel_id)
|
||||
raise Exception("Their fee is not in the overlap region, we force closed.")
|
||||
# otherwise, MUST reply with the same fee_satoshis.
|
||||
our_fee = their_fee
|
||||
@@ -2058,7 +2059,7 @@ class Peer(Logger):
|
||||
# if it has already sent a closing_signed:
|
||||
if fee_range_sent:
|
||||
# fee_satoshis is not the same as the value we sent, we MUST fail the channel
|
||||
self.lnworker.schedule_force_closing(chan.channel_id)
|
||||
self.schedule_force_closing(chan.channel_id)
|
||||
raise Exception("Expected the same fee as ours, we force closed.")
|
||||
# otherwise:
|
||||
# MUST propose a fee_satoshis in the overlap between received and (about-to-be) sent fee_range.
|
||||
|
||||
Reference in New Issue
Block a user