mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-31 09:21:39 +00:00
channel backups: try fixing force-close-trigger
This commit is contained in:
parent
182c192558
commit
5401b3f72d
2 changed files with 21 additions and 12 deletions
|
@ -53,7 +53,7 @@ from .lnutil import ln_dummy_address
|
|||
from .json_db import StoredDict
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .lnworker import LNWorker, LNGossip, LNWallet
|
||||
from .lnworker import LNWorker, LNGossip, LNWallet, LNBackups
|
||||
from .lnrouter import RouteEdge, LNPaymentRoute
|
||||
from .transaction import PartialTransaction
|
||||
|
||||
|
@ -64,7 +64,12 @@ LN_P2P_NETWORK_TIMEOUT = 20
|
|||
class Peer(Logger):
|
||||
LOGGING_SHORTCUT = 'P'
|
||||
|
||||
def __init__(self, lnworker: Union['LNGossip', 'LNWallet'], pubkey:bytes, transport: LNTransportBase):
|
||||
def __init__(
|
||||
self,
|
||||
lnworker: Union['LNGossip', 'LNWallet', 'LNBackups'],
|
||||
pubkey: bytes,
|
||||
transport: LNTransportBase
|
||||
):
|
||||
self._sent_init = False # type: bool
|
||||
self._received_init = False # type: bool
|
||||
self.initialized = asyncio.Future()
|
||||
|
@ -425,9 +430,6 @@ class Peer(Logger):
|
|||
first_blocknum=first_block,
|
||||
number_of_blocks=num_blocks)
|
||||
|
||||
def encode_short_ids(self, ids):
|
||||
return chr(1) + zlib.compress(bfh(''.join(ids)))
|
||||
|
||||
def decode_short_ids(self, encoded):
|
||||
if encoded[0] == 0:
|
||||
decoded = encoded[1:]
|
||||
|
@ -773,8 +775,8 @@ class Peer(Logger):
|
|||
self.send_message(
|
||||
"channel_reestablish",
|
||||
channel_id=channel_id,
|
||||
next_local_commitment_number=0,
|
||||
next_remote_revocation_number=0,
|
||||
next_commitment_number=0,
|
||||
next_revocation_number=0,
|
||||
your_last_per_commitment_secret=0,
|
||||
my_current_per_commitment_point=latest_point)
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ from concurrent import futures
|
|||
|
||||
import dns.resolver
|
||||
import dns.exception
|
||||
from aiorpcx import run_in_thread
|
||||
from aiorpcx import run_in_thread, TaskGroup
|
||||
|
||||
from . import constants, util
|
||||
from . import keystore
|
||||
|
@ -1413,7 +1413,6 @@ class LNBackups(Logger):
|
|||
self.features = LnFeatures(0)
|
||||
self.features |= LnFeatures.OPTION_DATA_LOSS_PROTECT_OPT
|
||||
self.features |= LnFeatures.OPTION_STATIC_REMOTEKEY_OPT
|
||||
self.taskgroup = SilentTaskGroup()
|
||||
self.lock = threading.RLock()
|
||||
self.wallet = wallet
|
||||
self.db = wallet.db
|
||||
|
@ -1443,6 +1442,12 @@ class LNBackups(Logger):
|
|||
if chan.funding_outpoint.to_str() == txo:
|
||||
return chan
|
||||
|
||||
def on_peer_successfully_established(self, peer: Peer) -> None:
|
||||
pass
|
||||
|
||||
def channels_for_peer(self, node_id):
|
||||
return {}
|
||||
|
||||
def start_network(self, network: 'Network'):
|
||||
assert network
|
||||
self.lnwatcher = LNWalletWatcher(self, network)
|
||||
|
@ -1483,10 +1488,12 @@ class LNBackups(Logger):
|
|||
@log_exceptions
|
||||
async def request_force_close(self, channel_id):
|
||||
cb = self.channel_backups[channel_id].cb
|
||||
# TODO also try network addresses from gossip db (as it might have changed)
|
||||
peer_addr = LNPeerAddr(cb.host, cb.port, cb.node_id)
|
||||
transport = LNTransport(cb.privkey, peer_addr,
|
||||
proxy=self.network.proxy)
|
||||
peer = Peer(self, cb.node_id, transport)
|
||||
await self.taskgroup.spawn(peer._message_loop())
|
||||
await peer.initialized
|
||||
await self.taskgroup.spawn(peer.trigger_force_close(channel_id))
|
||||
async with TaskGroup() as group:
|
||||
await group.spawn(peer._message_loop())
|
||||
await group.spawn(peer.trigger_force_close(channel_id))
|
||||
# TODO force-exit taskgroup, to clean-up
|
||||
|
|
Loading…
Add table
Reference in a new issue