channel states: make sure that closing_txid is saved if channel is closed
This commit is contained in:
@@ -562,6 +562,7 @@ class LNWallet(LNWorker):
|
||||
out.append(item)
|
||||
if not chan.is_closed():
|
||||
continue
|
||||
assert closing_txid
|
||||
item = {
|
||||
'channel_id': bh2u(chan.channel_id),
|
||||
'txid': closing_txid,
|
||||
@@ -657,6 +658,10 @@ class LNWallet(LNWorker):
|
||||
if not chan:
|
||||
return
|
||||
|
||||
# return early to prevent overwriting closing_txid with None
|
||||
if chan.is_closed():
|
||||
return
|
||||
|
||||
# save timestamp regardless of state, so that funding tx is returned in get_history
|
||||
self.channel_timestamps[bh2u(chan.channel_id)] = chan.funding_outpoint.txid, funding_height.height, funding_height.timestamp, None, None, None
|
||||
|
||||
@@ -701,14 +706,12 @@ class LNWallet(LNWorker):
|
||||
if not chan:
|
||||
return
|
||||
|
||||
# fixme: this is wasteful
|
||||
self.channel_timestamps[bh2u(chan.channel_id)] = funding_txid, funding_height.height, funding_height.timestamp, closing_txid, closing_height.height, closing_height.timestamp
|
||||
|
||||
# remove from channel_db
|
||||
if chan.short_channel_id is not None:
|
||||
self.channel_db.remove_channel(chan.short_channel_id)
|
||||
|
||||
if chan.get_state() < channel_states.CLOSED:
|
||||
self.channel_timestamps[bh2u(chan.channel_id)] = funding_txid, funding_height.height, funding_height.timestamp, closing_txid, closing_height.height, closing_height.timestamp
|
||||
chan.set_state(channel_states.CLOSED)
|
||||
|
||||
if chan.get_state() == channel_states.CLOSED and not keep_watching:
|
||||
@@ -1309,7 +1312,7 @@ class LNWallet(LNWorker):
|
||||
with self.lock:
|
||||
channels = list(self.channels.values())
|
||||
for chan in channels:
|
||||
if chan.is_closed():
|
||||
if chan.is_closed() or chan.is_closing():
|
||||
continue
|
||||
if constants.net is not constants.BitcoinRegtest:
|
||||
chan_feerate = chan.get_latest_feerate(LOCAL)
|
||||
|
||||
Reference in New Issue
Block a user