diff --git a/iguana/iguana_exchanges.c b/iguana/iguana_exchanges.c index 4c25c06ec..d8dc38dfb 100755 --- a/iguana/iguana_exchanges.c +++ b/iguana/iguana_exchanges.c @@ -590,7 +590,9 @@ void iguana_statemachineupdate(struct supernet_info *myinfo,struct exchange_info portable_mutex_lock(&exchange->mutex); DL_FOREACH_SAFE(exchange->statemachines,swap,tmp) { - instantdex_statemachine_iter(myinfo,exchange,swap); + if ( swap->dead != 0 || swap->mine.dead == 0 || swap->other.dead == 0 ) + DL_DELETE(exchange->statemachines,swap); + else instantdex_statemachine_iter(myinfo,exchange,swap); } portable_mutex_unlock(&exchange->mutex); while ( (req= queue_dequeue(&exchange->recvQ,0)) != 0 ) diff --git a/iguana/swaps/iguana_BTCswap.c b/iguana/swaps/iguana_BTCswap.c index a2e0f65e9..d6bef2dd2 100755 --- a/iguana/swaps/iguana_BTCswap.c +++ b/iguana/swaps/iguana_BTCswap.c @@ -1075,6 +1075,8 @@ char *instantdex_statemachine(struct instantdex_stateinfo *states,int32_t numsta void instantdex_statemachine_iter(struct supernet_info *myinfo,struct exchange_info *exchange,struct bitcoin_swapinfo *swap) { char *str; struct bitcoin_eventitem *ptr; cJSON *newjson; struct iguana_info *coinbtc; int32_t flag = 0; + if ( swap->dead != 0 || swap->mine.dead == 0 || swap->other.dead == 0 ) + return; coinbtc = iguana_coinfind("BTC"); if ( instantdex_isbob(swap) != 0 && swap->myfee == 0 ) swap->myfee = instantdex_feetx(myinfo,&swap->mine,swap,coinbtc);