Merge pull request #8618 from accumulator/fix_swap_cancel_race
submarine swaps: register hold invoice early in wait_for_htlcs_and_br…
This commit is contained in:
@@ -674,6 +674,11 @@ class SwapManager(Logger):
|
|||||||
payment_hash = swap.payment_hash
|
payment_hash = swap.payment_hash
|
||||||
refund_pubkey = ECPrivkey(swap.privkey).get_public_key_bytes(compressed=True)
|
refund_pubkey = ECPrivkey(swap.privkey).get_public_key_bytes(compressed=True)
|
||||||
if self.server_supports_htlc_first:
|
if self.server_supports_htlc_first:
|
||||||
|
async def callback(payment_hash):
|
||||||
|
await self.broadcast_funding_tx(swap, tx)
|
||||||
|
|
||||||
|
self.lnworker.register_hold_invoice(payment_hash, callback)
|
||||||
|
|
||||||
# send invoice to server and wait for htlcs
|
# send invoice to server and wait for htlcs
|
||||||
request_data = {
|
request_data = {
|
||||||
"preimageHash": payment_hash.hex(),
|
"preimageHash": payment_hash.hex(),
|
||||||
@@ -686,9 +691,6 @@ class SwapManager(Logger):
|
|||||||
json=request_data,
|
json=request_data,
|
||||||
timeout=30)
|
timeout=30)
|
||||||
data = json.loads(response)
|
data = json.loads(response)
|
||||||
async def callback(payment_hash):
|
|
||||||
await self.broadcast_funding_tx(swap, tx)
|
|
||||||
self.lnworker.register_hold_invoice(payment_hash, callback)
|
|
||||||
# wait for funding tx
|
# wait for funding tx
|
||||||
lnaddr = lndecode(invoice)
|
lnaddr = lndecode(invoice)
|
||||||
while swap.funding_txid is None and not lnaddr.is_expired():
|
while swap.funding_txid is None and not lnaddr.is_expired():
|
||||||
@@ -739,7 +741,7 @@ class SwapManager(Logger):
|
|||||||
lightning_amount_sat: int,
|
lightning_amount_sat: int,
|
||||||
expected_onchain_amount_sat: int,
|
expected_onchain_amount_sat: int,
|
||||||
channels = None,
|
channels = None,
|
||||||
) -> bool:
|
) -> Optional[str]:
|
||||||
"""send on Lightning, receive on-chain
|
"""send on Lightning, receive on-chain
|
||||||
|
|
||||||
- User generates preimage, RHASH. Sends RHASH to server.
|
- User generates preimage, RHASH. Sends RHASH to server.
|
||||||
|
|||||||
Reference in New Issue
Block a user