unsigned long blocking = 0;
fd_set rf_fdset;
int retry = 5;
struct timeval tv;
char error;
int length;
network->address.sin_family = AF_INET;
len = sizeof(network->address);
ioctl(datalink->fd,FIONBIO,&non_blocking);
try_again:
ret = connect(datalink->fd, (const struct sockaddr *)&network->address, len); MOD_LOG(SYS_DATALINK_MOD, FD_CLR(datalink->fd,&rf_fdset);
FD_ZERO(&rf_fdset);
FD_SET(datalink->fd, &rf_fdset);
tv.tv_sec = 0;
tv.tv_usec = 10;
length = sizeof(int);
if( select(datalink->fd+1, NULL, &rf_fdset, NULL, &tv) > 0)
{
if (FD_ISSET(datalink->fd,&rf_fdset))
{
length = sizeof(error);
if(getsockopt(datalink->fd, SOL_SOCKET, SO_ERROR, &error, (socklen_t *)&length) < 0)
{
ret =0;
} else {
if(error == 0)
{ ret =1; }
else ret =0; }
}
else ret =0;
}
else
ret =0;
} else ret = 1;
unsigned long non_blocking = 1;