Browse Source

on_commitment_signed: distinguish between exceptions

dependabot/pip/contrib/deterministic-build/ecdsa-0.13.3
ThomasV 6 years ago
parent
commit
9eddb9844c
  1. 10
      electrum/lnpeer.py

10
electrum/lnpeer.py

@ -1097,12 +1097,14 @@ class Peer(Logger):
self.logger.info("on_commitment_signed") self.logger.info("on_commitment_signed")
channel_id = payload['channel_id'] channel_id = payload['channel_id']
chan = self.channels[channel_id] chan = self.channels[channel_id]
ctn_to_recv = chan.get_current_ctn(LOCAL) + 1
# make sure there were changes to the ctx, otherwise the remote peer is misbehaving # make sure there were changes to the ctx, otherwise the remote peer is misbehaving
if (chan.hm.pending_htlcs(LOCAL) == chan.hm.current_htlcs(LOCAL) if (chan.hm.pending_htlcs(LOCAL) == chan.hm.current_htlcs(LOCAL)
and chan.pending_feerate(LOCAL) == chan.constraints.feerate) \ and chan.pending_feerate(LOCAL) == chan.constraints.feerate):
or ctn_to_recv == self.recv_commitment_for_ctn_last[chan]: raise RemoteMisbehaving('received commitment_signed without pending changes')
raise RemoteMisbehaving('received commitment_signed without any change') # make sure ctn is new
ctn_to_recv = chan.get_current_ctn(LOCAL) + 1
if ctn_to_recv == self.recv_commitment_for_ctn_last[chan]:
raise RemoteMisbehaving('received commitment_signed with same ctn')
self.recv_commitment_for_ctn_last[chan] = ctn_to_recv self.recv_commitment_for_ctn_last[chan] = ctn_to_recv
data = payload["htlc_signature"] data = payload["htlc_signature"]

Loading…
Cancel
Save