diff --git a/bot.c b/bot.c index fd0ac17..62d749d 100644 --- a/bot.c +++ b/bot.c @@ -1,3 +1,7 @@ +/* + $Id$ +*/ + #include #include "tuvebot.h" diff --git a/socket.c b/socket.c index 3c135f4..6ba3fc1 100644 --- a/socket.c +++ b/socket.c @@ -21,30 +21,35 @@ int sConnect(const char *host,int port) { struct sockaddr_in rmAddr; // remote address information struct hostent *hp; + int att; - if (mySocket != 0x0) - close(mySocket); + for (att = 1;att < 10;att++) { + if (mySocket != 0x0) + close(mySocket); - if ((mySocket = socket(PF_INET, SOCK_STREAM, 0)) == -1) { - perror("socket"); - exit(1); - } - - writeLog(0,"Connecting to: %s port %i\n",host,port); + if ((mySocket = socket(PF_INET, SOCK_STREAM, 0)) == -1) { + perror("socket"); + exit(1); + } - hp = gethostbyname(host); + writeLog(0,"Connecting to: %s, port %i, socket %i, attempt: %i\n",host,port,mySocket,att); + + hp = gethostbyname(host); - bzero(&rmAddr,sizeof(struct sockaddr_in)); + bzero(&rmAddr,sizeof(struct sockaddr_in)); - memcpy(&(rmAddr.sin_addr.s_addr),*(hp->h_addr_list),sizeof(struct in_addr)); + //memcpy(&(rmAddr.sin_addr.s_addr),*(hp->h_addr_list),sizeof(struct in_addr)); + bcopy((char *)hp->h_addr,(char *)&rmAddr.sin_addr.s_addr,hp->h_length); rmAddr.sin_family = AF_INET; // host byte order rmAddr.sin_port = htons(port); // short, network byte order memset(rmAddr.sin_zero, '\0', sizeof rmAddr.sin_zero); - while (connect(mySocket,&rmAddr,sizeof(rmAddr)) != 0x0) { - writeLog(1,"Error Connecting.\n"); - sleep(5); + if (connect(mySocket,&rmAddr,sizeof(rmAddr)) == 0x0) + break; + + writeLog(1,"Error Connecting: %i.\n",errno); + sleep(5); } writeLog(2,"my Socket: [%i]\n",mySocket);