From a042b8f34e03450efef470be42b534a9697a5448 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 4 Feb 2018 15:16:40 +0200 Subject: [PATCH] Test --- iguana/exchanges/LP_network.c | 6 ++++-- iguana/exchanges/LP_peers.c | 15 ++++++++++++++- iguana/exchanges/LP_privkey.c | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/iguana/exchanges/LP_network.c b/iguana/exchanges/LP_network.c index d65519615..bd8679e61 100644 --- a/iguana/exchanges/LP_network.c +++ b/iguana/exchanges/LP_network.c @@ -662,7 +662,7 @@ char *_LP_psock_create(int32_t *pullsockp,int32_t *pubsockp,char *ipaddr,uint16_ break; } } - printf("pairsock for %s <- %d\n",bits256_str(str,pubkey),pubp->pairsock); + printf("pairsock for %s <- %d\n",bits256_str(str,pubkey),pullsock); pubp->pairsock = pullsock; } } @@ -675,7 +675,7 @@ char *_LP_psock_create(int32_t *pullsockp,int32_t *pubsockp,char *ipaddr,uint16_ jaddnum(retjson,"cmdchannel",cmdchannel); jaddstr(retjson,"publicaddr",pushaddr); jaddnum(retjson,"publicport",publicport); - printf("cmd.%d publicaddr.(%s) for subaddr.(%s), pullsock.%d pubsock.%d\n",cmdchannel,pushaddr,subaddr,pullsock,pubsock); + //printf("cmd.%d publicaddr.(%s) for subaddr.(%s), pullsock.%d pubsock.%d\n",cmdchannel,pushaddr,subaddr,pullsock,pubsock); *pullsockp = pullsock; if ( cmdchannel == 0 ) *pubsockp = pubsock; @@ -703,6 +703,8 @@ char *LP_psock(int32_t *pubsockp,char *ipaddr,int32_t ispaired,int32_t cmdchanne } else { + if ( cmdchannel != 0 && bits256_nonz(pubkey) == 0 ) + return(clonestr("{\"error\",\"cant do pairsock for null pubkey\"}")); maxport = 65534; publicport = subport = Pcmdport++; } diff --git a/iguana/exchanges/LP_peers.c b/iguana/exchanges/LP_peers.c index d0d6c4df5..f34817423 100644 --- a/iguana/exchanges/LP_peers.c +++ b/iguana/exchanges/LP_peers.c @@ -71,6 +71,19 @@ void LP_cmdchannel(struct LP_peerinfo *peer) } else printf("error getting cmdchannel with %s\n",peer->ipaddr); } +void LP_cmdchannels() +{ + struct LP_peerinfo *peer,*tmp; + if ( IAMLP == 0 ) + { + HASH_ITER(hh,LP_peerinfos,peer,tmp) + { + if ( peer->pairsock == 0 ) + LP_cmdchannel(peer); + } + } +} + struct LP_peerinfo *LP_addpeer(struct LP_peerinfo *mypeer,int32_t mypubsock,char *ipaddr,uint16_t port,uint16_t pushport,uint16_t subport,int32_t isLP,uint32_t sessionid,uint16_t netid) { uint32_t ipbits; int32_t valid,pushsock,subsock,timeout; char checkip[64],pushaddr[64],subaddr[64]; struct LP_peerinfo *peer = 0; @@ -237,7 +250,7 @@ void LP_peer_recv(char *ipaddr,int32_t ismine,struct LP_pubkey_info *pubp) if ( (peer= LP_peerfind((uint32_t)calc_ipbits(ipaddr),RPC_port)) != 0 ) { peer->numrecv++; - if ( ismine != 0 && (bits256_nonz(peer->pubkey) == 0 || pubp->pairsock <= 0) ) + if ( ismine != 0 && bits256_cmp(G.LP_mypub25519,pubp->pubkey) != 0 && (bits256_nonz(peer->pubkey) == 0 || pubp->pairsock <= 0) ) { peer->pubkey = pubp->pubkey; pubp->pairsock = peer->pairsock; diff --git a/iguana/exchanges/LP_privkey.c b/iguana/exchanges/LP_privkey.c index 191c5fde1..f0c8c2719 100644 --- a/iguana/exchanges/LP_privkey.c +++ b/iguana/exchanges/LP_privkey.c @@ -417,6 +417,7 @@ int32_t LP_passphrase_init(char *passphrase,char *gui,uint16_t netid,char *seedn LP_priceinfos_clear(); G.USERPASS_COUNTER = counter; G.initializing = 0; + LP_cmdchannels(); return(0); }