Skip to content

Commit 15ef0fb

Browse files
authored
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
1 parent fd86625 commit 15ef0fb

1 file changed

Lines changed: 15 additions & 11 deletions

File tree

swaps/swaps_service.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,11 @@ func (svc *swapsService) subscribePendingSwaps() {
856856
}
857857

858858
func (svc *swapsService) startSwapInListener(swap *db.Swap) {
859+
updateCh := make(chan boltz.SwapUpdate, 1)
860+
svc.swapListenersLock.Lock()
861+
svc.swapListeners[swap.SwapId] = updateCh
862+
svc.swapListenersLock.Unlock()
863+
859864
for {
860865
err := svc.boltzWs.Subscribe([]string{swap.SwapId})
861866
if err != nil {
@@ -868,11 +873,6 @@ func (svc *swapsService) startSwapInListener(swap *db.Swap) {
868873

869874
logger.Logger.WithField("swapId", swap.SwapId).Info("Subscribed to boltz websocket")
870875

871-
updateCh := make(chan boltz.SwapUpdate)
872-
svc.swapListenersLock.Lock()
873-
svc.swapListeners[swap.SwapId] = updateCh
874-
svc.swapListenersLock.Unlock()
875-
876876
var err error
877877
defer func() {
878878
svc.swapListenersLock.Lock()
@@ -1024,6 +1024,11 @@ func (svc *swapsService) startSwapInListener(swap *db.Swap) {
10241024
}
10251025

10261026
func (svc *swapsService) startSwapOutListener(swap *db.Swap) {
1027+
updateCh := make(chan boltz.SwapUpdate, 1)
1028+
svc.swapListenersLock.Lock()
1029+
svc.swapListeners[swap.SwapId] = updateCh
1030+
svc.swapListenersLock.Unlock()
1031+
10271032
for {
10281033
err := svc.boltzWs.Subscribe([]string{swap.SwapId})
10291034
if err != nil {
@@ -1036,11 +1041,6 @@ func (svc *swapsService) startSwapOutListener(swap *db.Swap) {
10361041

10371042
logger.Logger.WithField("swapId", swap.SwapId).Info("Subscribed to boltz websocket")
10381043

1039-
updateCh := make(chan boltz.SwapUpdate)
1040-
svc.swapListenersLock.Lock()
1041-
svc.swapListeners[swap.SwapId] = updateCh
1042-
svc.swapListenersLock.Unlock()
1043-
10441044
var err error
10451045
defer func() {
10461046
svc.swapListenersLock.Lock()
@@ -1163,10 +1163,14 @@ func (svc *swapsService) startSwapOutListener(swap *db.Swap) {
11631163
logger.Logger.WithField("swapId", swap.SwapId).Info("Paying the swap invoice")
11641164
go func() {
11651165
_, err := svc.transactionsService.LookupTransaction(svc.ctx, swap.PaymentHash, nil, svc.lnClient, nil)
1166-
if err == transactions.NewNotFoundError() {
1166+
if err == nil {
11671167
logger.Logger.WithField("swapId", swap.SwapId).Info("Already initiated swap invoice payment")
11681168
return
11691169
}
1170+
if !errors.Is(err, transactions.NewNotFoundError()) {
1171+
logger.Logger.WithError(err).WithField("swapId", swap.SwapId).Warn("Failed to lookup transaction")
1172+
return
1173+
}
11701174
metadata := map[string]interface{}{
11711175
"swap_id": swap.SwapId,
11721176
}

0 commit comments

Comments
 (0)