mirror of
https://github.com/getAlby/hub.git
synced 2026-08-13 12:33:39 +02:00
fix: register swap listeners before websocket subscribe (#2141)
* fix: register swap listeners before websocket subscribe * fix: only pay swap invoice when lookup returns not found
This commit is contained in:
parent
fd86625984
commit
15ef0fb68e
1 changed files with 15 additions and 11 deletions
|
|
@ -856,6 +856,11 @@ func (svc *swapsService) subscribePendingSwaps() {
|
|||
}
|
||||
|
||||
func (svc *swapsService) startSwapInListener(swap *db.Swap) {
|
||||
updateCh := make(chan boltz.SwapUpdate, 1)
|
||||
svc.swapListenersLock.Lock()
|
||||
svc.swapListeners[swap.SwapId] = updateCh
|
||||
svc.swapListenersLock.Unlock()
|
||||
|
||||
for {
|
||||
err := svc.boltzWs.Subscribe([]string{swap.SwapId})
|
||||
if err != nil {
|
||||
|
|
@ -868,11 +873,6 @@ func (svc *swapsService) startSwapInListener(swap *db.Swap) {
|
|||
|
||||
logger.Logger.WithField("swapId", swap.SwapId).Info("Subscribed to boltz websocket")
|
||||
|
||||
updateCh := make(chan boltz.SwapUpdate)
|
||||
svc.swapListenersLock.Lock()
|
||||
svc.swapListeners[swap.SwapId] = updateCh
|
||||
svc.swapListenersLock.Unlock()
|
||||
|
||||
var err error
|
||||
defer func() {
|
||||
svc.swapListenersLock.Lock()
|
||||
|
|
@ -1024,6 +1024,11 @@ func (svc *swapsService) startSwapInListener(swap *db.Swap) {
|
|||
}
|
||||
|
||||
func (svc *swapsService) startSwapOutListener(swap *db.Swap) {
|
||||
updateCh := make(chan boltz.SwapUpdate, 1)
|
||||
svc.swapListenersLock.Lock()
|
||||
svc.swapListeners[swap.SwapId] = updateCh
|
||||
svc.swapListenersLock.Unlock()
|
||||
|
||||
for {
|
||||
err := svc.boltzWs.Subscribe([]string{swap.SwapId})
|
||||
if err != nil {
|
||||
|
|
@ -1036,11 +1041,6 @@ func (svc *swapsService) startSwapOutListener(swap *db.Swap) {
|
|||
|
||||
logger.Logger.WithField("swapId", swap.SwapId).Info("Subscribed to boltz websocket")
|
||||
|
||||
updateCh := make(chan boltz.SwapUpdate)
|
||||
svc.swapListenersLock.Lock()
|
||||
svc.swapListeners[swap.SwapId] = updateCh
|
||||
svc.swapListenersLock.Unlock()
|
||||
|
||||
var err error
|
||||
defer func() {
|
||||
svc.swapListenersLock.Lock()
|
||||
|
|
@ -1163,10 +1163,14 @@ func (svc *swapsService) startSwapOutListener(swap *db.Swap) {
|
|||
logger.Logger.WithField("swapId", swap.SwapId).Info("Paying the swap invoice")
|
||||
go func() {
|
||||
_, err := svc.transactionsService.LookupTransaction(svc.ctx, swap.PaymentHash, nil, svc.lnClient, nil)
|
||||
if err == transactions.NewNotFoundError() {
|
||||
if err == nil {
|
||||
logger.Logger.WithField("swapId", swap.SwapId).Info("Already initiated swap invoice payment")
|
||||
return
|
||||
}
|
||||
if !errors.Is(err, transactions.NewNotFoundError()) {
|
||||
logger.Logger.WithError(err).WithField("swapId", swap.SwapId).Warn("Failed to lookup transaction")
|
||||
return
|
||||
}
|
||||
metadata := map[string]interface{}{
|
||||
"swap_id": swap.SwapId,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue