Browse Source

test

release/v0.1
jl777 9 years ago
parent
commit
99bbc8f4c9
  1. 45
      iguana/iguana_peers.c
  2. 5
      iguana/main.c

45
iguana/iguana_peers.c

@ -296,21 +296,42 @@ int32_t iguana_socket(int32_t bindflag,char *hostname,uint16_t port)
#ifdef __APPLE__ #ifdef __APPLE__
setsockopt(sock,SOL_SOCKET,SO_NOSIGPIPE,&opt,sizeof(opt)); setsockopt(sock,SOL_SOCKET,SO_NOSIGPIPE,&opt,sizeof(opt));
#endif #endif
result = (bindflag != 0) ? bind(sock,(struct sockaddr*)&saddr,addrlen) : connect(sock,(struct sockaddr *)&saddr,addrlen); if ( bindflag == 0 )
if ( result != 0 )
{ {
if ( errno != ECONNRESET && errno != ENOTCONN && errno != ECONNREFUSED && errno != ETIMEDOUT && errno != EHOSTUNREACH ) result = connect(sock,(struct sockaddr *)&saddr,addrlen);
printf("%s(%s) port.%d failed: %s sock.%d. errno.%d\n",bindflag!=0?"bind":"connect",hostname,port,strerror(errno),sock,errno); if ( result != 0 )
if ( sock >= 0 ) {
closesocket(sock); if ( errno != ECONNRESET && errno != ENOTCONN && errno != ECONNREFUSED && errno != ETIMEDOUT && errno != EHOSTUNREACH )
return(-1); printf("%s(%s) port.%d failed: %s sock.%d. errno.%d\n",bindflag!=0?"bind":"connect",hostname,port,strerror(errno),sock,errno);
if ( sock >= 0 )
closesocket(sock);
return(-1);
}
} }
if ( bindflag != 0 && listen(sock,64) != 0 ) else
{ {
printf("listen(%s) port.%d failed: %s sock.%d. errno.%d\n",hostname,port,strerror(errno),sock,errno); while ( (result= bind(sock,(struct sockaddr*)&saddr,addrlen)) != 0 )
if ( sock >= 0 ) {
closesocket(sock); if ( errno == EADDRINUSE )
return(-1); {
printf("%s(%s) port.%d try again: %s sock.%d. errno.%d\n",bindflag!=0?"bind":"connect",hostname,port,strerror(errno),sock,errno);
sleep(3);
continue;
}
if ( errno != ECONNRESET && errno != ENOTCONN && errno != ECONNREFUSED && errno != ETIMEDOUT && errno != EHOSTUNREACH )
{
printf("%s(%s) port.%d failed: %s sock.%d. errno.%d\n",bindflag!=0?"bind":"connect",hostname,port,strerror(errno),sock,errno);
closesocket(sock);
return(-1);
}
}
if ( listen(sock,64) != 0 )
{
printf("listen(%s) port.%d failed: %s sock.%d. errno.%d\n",hostname,port,strerror(errno),sock,errno);
if ( sock >= 0 )
closesocket(sock);
return(-1);
}
} }
return(sock); return(sock);
} }

5
iguana/main.c

@ -265,6 +265,11 @@ void iguana_main(void *arg)
} }
free(ipaddr); free(ipaddr);
} }
if ( MYINFO.myaddr.selfipbits == 0 )
{
strcpy(MYINFO.ipaddr,"127.0.0.1");
MYINFO.myaddr.selfipbits = (uint32_t)calc_ipbits(MYINFO.ipaddr);
}
signal(SIGINT,sigint_func); signal(SIGINT,sigint_func);
signal(SIGILL,sigillegal_func); signal(SIGILL,sigillegal_func);
signal(SIGHUP,sighangup_func); signal(SIGHUP,sighangup_func);

Loading…
Cancel
Save