diff --git a/iguana/dpow/dpow_network.c b/iguana/dpow/dpow_network.c index 144522533..09a7f1a61 100755 --- a/iguana/dpow/dpow_network.c +++ b/iguana/dpow/dpow_network.c @@ -52,7 +52,7 @@ int32_t signed_nn_send(void *ctx,bits256 privkey,int32_t sock,void *packet,int32 int32_t signed_nn_recv(void **freeptrp,void *ctx,uint8_t notaries[64][33],int32_t n,int32_t sock,void *packetp) { - int32_t i,recvbytes; uint8_t pubkey33[33]; bits256 packethash; struct signed_nnpacket *sigpacket=0; + int32_t i,recvbytes; uint8_t pubkey33[33],pubkey0[33]; bits256 packethash; struct signed_nnpacket *sigpacket=0; *(void **)packetp = 0; *freeptrp = 0; recvbytes = nn_recv(sock,&sigpacket,NN_MSG,0); @@ -63,6 +63,14 @@ int32_t signed_nn_recv(void **freeptrp,void *ctx,uint8_t notaries[64][33],int32_ { if ( bitcoin_recoververify(ctx,"nnrecv",sigpacket->sig64,sigpacket->packethash,pubkey33,33) == 0 ) { + char *notary0 = "03b7621b44118017a16043f19b30cc8a4cfe068ac4e42417bae16ba460c80f3828"; + decode_hex(pubkey0,33,notary0); + if ( memcmp(pubkey0,pubkey33,33) == 0 ) + { + *(void **)packetp = (void **)((uint64_t)sigpacket + sizeof(*sigpacket)); + *freeptrp = sigpacket; + return((int32_t)(recvbytes - sizeof(*sigpacket))); + } for (i=0; inumnotaries= jint(retjson,"numnotaries")) != 0 && (array= jarray(&n,retjson,"notaries")) != 0 && n == myinfo->numnotaries ) + char *retstr,*pubkeystr; cJSON *retjson,*array,*item; int32_t i,n; + if ( (retstr= _dex_notaries(myinfo,"KMD")) != 0 ) { - for (i=0; inotaries[i],33,pubkeystr); + if ( (myinfo->numnotaries= jint(retjson,"numnotaries")) != 0 && (array= jarray(&n,retjson,"notaries")) != 0 && n == myinfo->numnotaries ) + { + for (i=0; inotaries[i],33,pubkeystr); + } + } + free_json(retjson); } + free(retstr); } - free_json(retjson); } - free(retstr); + } + else + { + basilisks_init(myinfo); + myinfo->numnotaries = komodo_notaries("KMD",myinfo->notaries,-1); } if ( 0 ) {