From 065ff583112961ded604e27f96960899787e3a15 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 5 Feb 2018 19:10:00 +0200 Subject: [PATCH] Test --- iguana/exchanges/LP_network.c | 64 ++++++++++++++++++++++------------ iguana/exchanges/LP_remember.c | 10 +++--- 2 files changed, 47 insertions(+), 27 deletions(-) diff --git a/iguana/exchanges/LP_network.c b/iguana/exchanges/LP_network.c index aaa0b377e..dcf66efbd 100644 --- a/iguana/exchanges/LP_network.c +++ b/iguana/exchanges/LP_network.c @@ -472,6 +472,24 @@ void LP_queuecommand(char **retstrp,char *buf,int32_t responsesock,int32_t stats portable_mutex_unlock(&LP_commandQmutex); } +void mynn_close(int32_t sock) +{ + struct nn_pollfd pfd; int32_t n; void *buf; + if ( sock >= 0 ) + { + while ( (n= nn_recv(sock,&buf,NN_MSG,0)) > 0 ) + printf("got n.%d bytes from nn_close(%d)\n",n,sock); + pfd.fd = sock; + pfd.events = POLLOUT; + while ( nn_poll(&pfd,1,100) > 0 ) + { + printf("cant send to nn_close(%d)\n",sock); + sleep(1); + } + nn_close(sock); + } +} + void LP_psockloop(void *_ptr) { static struct nn_pollfd *pfds; @@ -505,7 +523,7 @@ void LP_psockloop(void *_ptr) pfds = calloc(MAX_PSOCK_PORT,sizeof(*pfds)); portable_mutex_lock(&LP_psockmutex); memset(pfds,0,sizeof(*pfds) * ((Numpsocks*2 <= MAX_PSOCK_PORT) ? Numpsocks*2 : MAX_PSOCK_PORT)); - for (iter=0; iter<2; iter++) + for (iter=j=0; iter<2; iter++) { for (j=n=0; j= 0 ) - printf("sendsock.%d Numpsocks.%d\n",sendsock,Numpsocks); if ( sendsock < 0 ) { + usleep(30000); for (i=nonz=0; i ptr->lasttime+PSOCK_KEEPALIVE ) + if ( now > ptr->lasttime+PSOCK_KEEPALIVE/10 ) { - //printf("PSOCKS[%d] of %d (%u %u) lag.%d IDLETIMEOUT\n",i,Numpsocks,ptr->publicport,ptr->sendport,now - ptr->lasttime); + printf("PSOCKS[%d] of %d (%u %u) lag.%d IDLETIMEOUT\n",i,Numpsocks,ptr->publicport,ptr->sendport,now - ptr->lasttime); if ( ptr->sendsock != ptr->publicsock && ptr->sendsock >= 0 ) - nn_close(ptr->sendsock); + mynn_close(ptr->sendsock), ptr->sendsock = -1; if ( ptr->publicsock >= 0 ) - nn_close(ptr->publicsock); + mynn_close(ptr->publicsock), ptr->publicsock = -1; + nonz++; //portable_mutex_lock(&LP_psockmutex); if ( Numpsocks > 1 ) { @@ -619,25 +637,25 @@ void LP_psockloop(void *_ptr) memset(&PSOCKS[Numpsocks],0,sizeof(*ptr)); } else Numpsocks = 0; //portable_mutex_unlock(&LP_psockmutex); - break; } - else if ( now > ptr->lastping+PSOCK_KEEPALIVE/2 && ptr->errors < 3 ) + } + } + if ( nonz > 0 ) + { + n = Numpsocks; + for (i=0; isendsock < 0 && ptr->publicsock < 0 ) { - ptr->lastping = now; - if ( 0 ) - { - sendsock = ptr->sendsock; - sprintf(keepalive,"{\"method\":\"keepalive\",\"endpoint\":\"%s\"}",ptr->sendaddr); - size = (int32_t)strlen(keepalive) + 1; - buf = keepalive; - printf("send keepalive.(%s)\n",keepalive); - } - break; + for (j=i; jpairsock >= 0 ) { printf("%s already has pairsock.%d\n",bits256_str(str,pubkey),pubp->pairsock); + portable_mutex_lock(&LP_psockmutex); for (i=0; ipairsock ) { @@ -710,9 +729,10 @@ char *_LP_psock_create(int32_t *pullsockp,int32_t *pubsockp,char *ipaddr,uint16_ //printf("cmd.%d publicaddr.(%s) for subaddr.(%s), pullsock.%d pubsock.%d\n",cmdchannel,pushaddr,subaddr,pullsock,pubsock); *pullsockp = pullsock; *pubsockp = pubsock; + portable_mutex_unlock(&LP_psockmutex); return(jprint(retjson,1)); } - LP_psockadd(ispaired,pullsock,publicport,pubsock,subport,subaddr,pushaddr,cmdchannel); + portable_mutex_unlock(&LP_psockmutex); } //printf("pairsock for %s <- %d\n",bits256_str(str,pubkey),pullsock); //pubp->pairsock = pullsock; diff --git a/iguana/exchanges/LP_remember.c b/iguana/exchanges/LP_remember.c index e4b78c913..2aad1afb5 100644 --- a/iguana/exchanges/LP_remember.c +++ b/iguana/exchanges/LP_remember.c @@ -794,7 +794,7 @@ int32_t LP_swap_load(struct LP_swap_remember *rswap,int32_t forceflag) { if ( (sentobj= LP_gettx(symbol,txid,1)) == 0 ) { - char str2[65]; printf("%s %s ready to broadcast\n",symbol,bits256_str(str2,txid)); + char str2[65]; printf("%s %s ready to broadcast %s r%u q%u\n",symbol,bits256_str(str2,txid),txnames[i],rswap->requestid,rswap->quoteid); } else { @@ -1132,10 +1132,10 @@ cJSON *basilisk_remember(int64_t *KMDtotals,int64_t *BTCtotals,uint32_t requesti len = basilisk_swapuserdata(userdata,zero,1,rswap.myprivs[1],redeemscript,redeemlen); if ( (rswap.txbytes[BASILISK_BOBRECLAIM]= basilisk_swap_bobtxspend(&signedtxid,rswap.Btxfee,"bobrefund",rswap.bobcoin,bob->wiftaddr,bob->taddr,bob->pubtype,bob->p2shtype,bob->isPoS,bob->wiftype,ctx,rswap.myprivs[1],0,redeemscript,redeemlen,userdata,len,rswap.txids[BASILISK_BOBPAYMENT],0,0,rswap.pubkey33,0,claimtime,&rswap.values[BASILISK_BOBRECLAIM],0,0,rswap.bobpaymentaddr,1,bob->zcash)) != 0 ) { - int32_t z; - for (z=0; z<20; z++) - printf("%02x",rswap.secretAm[z]); - printf(" secretAm, myprivs[1].(%s) bobreclaim.(%s)\n",bits256_str(str,rswap.myprivs[1]),rswap.txbytes[BASILISK_BOBRECLAIM]); + //int32_t z; + //for (z=0; z<20; z++) + // printf("%02x",rswap.secretAm[z]); + //printf(" secretAm, myprivs[1].(%s) bobreclaim.(%s)\n",bits256_str(str,rswap.myprivs[1]),rswap.txbytes[BASILISK_BOBRECLAIM]); } } LP_txbytes_update("bobreclaim",rswap.bobcoin,rswap.txbytes[BASILISK_BOBRECLAIM],&rswap.txids[BASILISK_BOBRECLAIM],&rswap.paymentspent,&rswap.sentflags[BASILISK_BOBRECLAIM]);