jl777 8 years ago
parent
commit
61b3c3a9f1
  1. 43
      iguana/dpow/dpow_network.c

43
iguana/dpow/dpow_network.c

@ -56,29 +56,42 @@ static int _increasing_ipbits(const void *a,const void *b)
#undef uint32_b #undef uint32_b
} }
int32_t dpow_addnotary(struct supernet_info *myinfo,char *ipaddr) int32_t dpow_addnotary(struct supernet_info *myinfo,struct dpow_info *dp,char *ipaddr)
{ {
char str[512]; uint32_t ipbits; int32_t i,n,retval = -1; char str[512]; uint32_t ipbits,*ptr; int32_t i,iter,n,retval = -1;
if ( myinfo->dpowsock >= 0 && strcmp(ipaddr,myinfo->ipaddr) != 0 ) if ( myinfo->dpowsock >= 0 && strcmp(ipaddr,myinfo->ipaddr) != 0 )
{ {
portable_mutex_lock(&myinfo->dpowmutex); portable_mutex_lock(&myinfo->dpowmutex);
n = myinfo->numdpowipbits;
ipbits = (uint32_t)calc_ipbits(ipaddr); ipbits = (uint32_t)calc_ipbits(ipaddr);
for (iter=0; iter<2; iter++)
{
if ( iter == 0 )
{
n = myinfo->numdpowipbits;
ptr = myinfo->dpowipbits;
}
else
{
n = dp->numipbits;
ptr = dp->ipbits;
}
for (i=0; i<n; i++) for (i=0; i<n; i++)
if ( ipbits == myinfo->dpowipbits[i] ) if ( ipbits == ptr[i] )
break; break;
if ( i == n && n < sizeof(myinfo->dpowipbits)/sizeof(*myinfo->dpowipbits) ) if ( i == n && n < 64 )
{ {
myinfo->dpowipbits[n] = ipbits; ptr[n] = ipbits;
if ( iter == 0 )
retval = nn_connect(myinfo->dpowsock,nanomsg_tcpname(str,ipaddr)); retval = nn_connect(myinfo->dpowsock,nanomsg_tcpname(str,ipaddr));
for (i=0; i<=n; i++) n++;
printf("%08x ",myinfo->dpowipbits[i]); qsort(ptr,n,sizeof(uint32_t),_increasing_ipbits);
printf("->\n"); if ( iter == 0 )
myinfo->numdpowipbits++; myinfo->numdpowipbits = n;
qsort(myinfo->dpowipbits,myinfo->numdpowipbits,sizeof(*myinfo->dpowipbits),_increasing_ipbits); else dp->numipbits = n;
for (i=0; i<myinfo->numdpowipbits; i++) for (i=0; i<n; i++)
printf("%08x ",myinfo->dpowipbits[i]); printf("%08x ",ptr[i]);
printf("addnotary.[%d] (%s) retval.%d (total %d)\n",n,ipaddr,retval,myinfo->numdpowipbits); printf("addnotary.[%d] (%s) retval.%d (total %d %d) iter.%d\n",n,ipaddr,retval,myinfo->numdpowipbits,dp->numipbits,iter);
}
} }
portable_mutex_unlock(&myinfo->dpowmutex); portable_mutex_unlock(&myinfo->dpowmutex);
} }
@ -356,7 +369,7 @@ void dpow_ipbitsadd(struct supernet_info *myinfo,struct dpow_info *dp,uint32_t *
{ {
expand_ipbits(ipaddr,ipbits[i]); expand_ipbits(ipaddr,ipbits[i]);
printf("ADD NOTARY.(%s)\n",ipaddr); printf("ADD NOTARY.(%s)\n",ipaddr);
dpow_addnotary(myinfo,ipaddr); dpow_addnotary(myinfo,dp,ipaddr);
} }
} else if ( missing > 0 ) printf("ignore\n"); } else if ( missing > 0 ) printf("ignore\n");
} }

Loading…
Cancel
Save