mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-09-01 09:45:18 +00:00
Define network.try_broadcasting() method.
Use it when rebroadcasting a force-close tx, because the channel state is already set.
This commit is contained in:
parent
dba6cb8a96
commit
36f32651cc
3 changed files with 14 additions and 15 deletions
|
@ -692,12 +692,12 @@ class LNWallet(LNWorker):
|
||||||
peer.on_network_update(chan, conf)
|
peer.on_network_update(chan, conf)
|
||||||
|
|
||||||
elif chan.get_state() == channel_states.FORCE_CLOSING:
|
elif chan.get_state() == channel_states.FORCE_CLOSING:
|
||||||
txid = chan.force_close_tx().txid()
|
force_close_tx = chan.force_close_tx()
|
||||||
|
txid = force_close_tx.txid()
|
||||||
height = self.lnwatcher.get_tx_height(txid).height
|
height = self.lnwatcher.get_tx_height(txid).height
|
||||||
self.logger.info(f"force closing tx {txid}, height {height}")
|
|
||||||
if height == TX_HEIGHT_LOCAL:
|
if height == TX_HEIGHT_LOCAL:
|
||||||
self.logger.info('REBROADCASTING CLOSING TX')
|
self.logger.info('REBROADCASTING CLOSING TX')
|
||||||
await self.force_close_channel(chan.channel_id)
|
await self.network.try_broadcasting(force_close_tx, 'force-close')
|
||||||
|
|
||||||
@ignore_exceptions
|
@ignore_exceptions
|
||||||
@log_exceptions
|
@log_exceptions
|
||||||
|
@ -769,12 +769,7 @@ class LNWallet(LNWorker):
|
||||||
self.logger.info(f'{name} could not claim output: {prevout}, dust')
|
self.logger.info(f'{name} could not claim output: {prevout}, dust')
|
||||||
self.wallet.set_label(tx.txid(), name)
|
self.wallet.set_label(tx.txid(), name)
|
||||||
if broadcast:
|
if broadcast:
|
||||||
try:
|
await self.network.try_broadcasting(tx, name)
|
||||||
await self.network.broadcast_transaction(tx)
|
|
||||||
except Exception as e:
|
|
||||||
self.logger.info(f'could NOT publish {name} for prevout: {prevout}, {str(e)}')
|
|
||||||
else:
|
|
||||||
self.logger.info(f'success: broadcasting {name} for prevout: {prevout}')
|
|
||||||
else:
|
else:
|
||||||
# it's OK to add local transaction, the fee will be recomputed
|
# it's OK to add local transaction, the fee will be recomputed
|
||||||
try:
|
try:
|
||||||
|
@ -1266,11 +1261,7 @@ class LNWallet(LNWorker):
|
||||||
chan = self.channels[chan_id]
|
chan = self.channels[chan_id]
|
||||||
tx = chan.force_close_tx()
|
tx = chan.force_close_tx()
|
||||||
chan.set_state(channel_states.FORCE_CLOSING)
|
chan.set_state(channel_states.FORCE_CLOSING)
|
||||||
try:
|
await self.network.try_broadcasting(tx, 'force-close')
|
||||||
await self.network.broadcast_transaction(tx)
|
|
||||||
except Exception as e:
|
|
||||||
self.logger.info(f'could NOT publish {tx.txid()}, {str(e)}')
|
|
||||||
return
|
|
||||||
return tx.txid()
|
return tx.txid()
|
||||||
|
|
||||||
def remove_channel(self, chan_id):
|
def remove_channel(self, chan_id):
|
||||||
|
|
|
@ -854,6 +854,14 @@ class Network(Logger):
|
||||||
self.logger.info(f"unexpected txid for broadcast_transaction [DO NOT TRUST THIS MESSAGE]: {out} != {tx.txid()}")
|
self.logger.info(f"unexpected txid for broadcast_transaction [DO NOT TRUST THIS MESSAGE]: {out} != {tx.txid()}")
|
||||||
raise TxBroadcastHashMismatch(_("Server returned unexpected transaction ID."))
|
raise TxBroadcastHashMismatch(_("Server returned unexpected transaction ID."))
|
||||||
|
|
||||||
|
async def try_broadcasting(self, tx, name):
|
||||||
|
try:
|
||||||
|
await self.broadcast_transaction(tx)
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.info(f'error: could not broadcast {name} {tx.txid()}, {str(e)}')
|
||||||
|
else:
|
||||||
|
self.logger.info(f'success: broadcasting {name} {tx.txid()}')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def sanitize_tx_broadcast_response(server_msg) -> str:
|
def sanitize_tx_broadcast_response(server_msg) -> str:
|
||||||
# Unfortunately, bitcoind and hence the Electrum protocol doesn't return a useful error code.
|
# Unfortunately, bitcoind and hence the Electrum protocol doesn't return a useful error code.
|
||||||
|
|
|
@ -64,7 +64,7 @@ class MockNetwork:
|
||||||
def get_local_height(self):
|
def get_local_height(self):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
async def broadcast_transaction(self, tx):
|
async def try_broadcasting(self, tx, name):
|
||||||
if self.tx_queue:
|
if self.tx_queue:
|
||||||
await self.tx_queue.put(tx)
|
await self.tx_queue.put(tx)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue