mirror of
https://github.com/glest/glest-source.git
synced 2025-08-11 19:04:00 +02:00
Bugfix for connecting to invalid IP Address will now properly detect a failed connection attempt.
This commit is contained in:
@@ -52,6 +52,7 @@ public:
|
|||||||
class Socket {
|
class Socket {
|
||||||
protected:
|
protected:
|
||||||
int sock;
|
int sock;
|
||||||
|
long lastDebugEvent;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Socket(int sock);
|
Socket(int sock);
|
||||||
|
@@ -402,10 +402,15 @@ bool Socket::isReadable()
|
|||||||
int i= select(sock+1, &set, NULL, NULL, &tv);
|
int i= select(sock+1, &set, NULL, NULL, &tv);
|
||||||
if(i < 0)
|
if(i < 0)
|
||||||
{
|
{
|
||||||
//throwException("Error selecting socket");
|
if(difftime(time(NULL),lastDebugEvent) >= 1)
|
||||||
char szBuf[1024]="";
|
{
|
||||||
sprintf(szBuf,"[%s::%s] error while selecting socket data, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,i,errno,strerror(errno));
|
lastDebugEvent = time(NULL);
|
||||||
printf("%s",szBuf);
|
|
||||||
|
//throwException("Error selecting socket");
|
||||||
|
char szBuf[1024]="";
|
||||||
|
sprintf(szBuf,"[%s::%s] error while selecting socket data, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,i,errno,strerror(errno));
|
||||||
|
printf("%s",szBuf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//return (i == 1 && FD_ISSET(sock, &set));
|
//return (i == 1 && FD_ISSET(sock, &set));
|
||||||
return (i == 1);
|
return (i == 1);
|
||||||
@@ -429,18 +434,27 @@ bool Socket::isWritable(bool waitOnDelayedResponse)
|
|||||||
int i = select(sock+1, NULL, &set, NULL, &tv);
|
int i = select(sock+1, NULL, &set, NULL, &tv);
|
||||||
if(i < 0 )
|
if(i < 0 )
|
||||||
{
|
{
|
||||||
char szBuf[1024]="";
|
if(difftime(time(NULL),lastDebugEvent) >= 1)
|
||||||
sprintf(szBuf,"[%s::%s] error while selecting socket data, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,i,errno,strerror(errno));
|
{
|
||||||
printf("%s",szBuf);
|
lastDebugEvent = time(NULL);
|
||||||
|
|
||||||
|
char szBuf[1024]="";
|
||||||
|
sprintf(szBuf,"[%s::%s] error while selecting socket data, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,i,errno,strerror(errno));
|
||||||
|
printf("%s",szBuf);
|
||||||
|
}
|
||||||
waitOnDelayedResponse = false;
|
waitOnDelayedResponse = false;
|
||||||
|
|
||||||
//throwException("Error selecting socket");
|
//throwException("Error selecting socket");
|
||||||
}
|
}
|
||||||
else if(i == 0)
|
else if(i == 0)
|
||||||
{
|
{
|
||||||
char szBuf[1024]="";
|
if(difftime(time(NULL),lastDebugEvent) >= 1)
|
||||||
sprintf(szBuf,"[%s::%s] TIMEOUT while selecting socket data, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,i,errno,strerror(errno));
|
{
|
||||||
printf("%s",szBuf);
|
lastDebugEvent = time(NULL);
|
||||||
|
char szBuf[1024]="";
|
||||||
|
sprintf(szBuf,"[%s::%s] TIMEOUT while selecting socket data, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,i,errno,strerror(errno));
|
||||||
|
printf("%s",szBuf);
|
||||||
|
}
|
||||||
|
|
||||||
if(waitOnDelayedResponse == false)
|
if(waitOnDelayedResponse == false)
|
||||||
{
|
{
|
||||||
@@ -611,6 +625,8 @@ void ClientSocket::connect(const Ip &ip, int port)
|
|||||||
sprintf(szBuf, "In [%s::%s] Timeout in select() - Cancelling!\n",__FILE__,__FUNCTION__);
|
sprintf(szBuf, "In [%s::%s] Timeout in select() - Cancelling!\n",__FILE__,__FUNCTION__);
|
||||||
//throwException(szBuf);
|
//throwException(szBuf);
|
||||||
fprintf(stderr, "%s", szBuf);
|
fprintf(stderr, "%s", szBuf);
|
||||||
|
|
||||||
|
disconnectSocket();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} while (1);
|
} while (1);
|
||||||
@@ -620,6 +636,7 @@ void ClientSocket::connect(const Ip &ip, int port)
|
|||||||
{
|
{
|
||||||
fprintf(stderr, "In [%s::%s] Before END sock = %d, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,sock,err,errno,strerror(errno));
|
fprintf(stderr, "In [%s::%s] Before END sock = %d, err = %d, errno = %d [%s]\n",__FILE__,__FUNCTION__,sock,err,errno,strerror(errno));
|
||||||
//throwException(szBuf);
|
//throwException(szBuf);
|
||||||
|
disconnectSocket();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -683,7 +683,7 @@ void ClientSocket::connect(const Ip &ip, int port)
|
|||||||
fprintf(stderr, "%s\n", WSAGetLastErrorMessage(szBuf));
|
fprintf(stderr, "%s\n", WSAGetLastErrorMessage(szBuf));
|
||||||
//fprintf(stderr, "%s", szBuf);
|
//fprintf(stderr, "%s", szBuf);
|
||||||
|
|
||||||
if (WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAEWOULDBLOCK)
|
if (WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAEWOULDBLOCK)
|
||||||
{
|
{
|
||||||
fd_set myset;
|
fd_set myset;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
@@ -746,7 +746,8 @@ void ClientSocket::connect(const Ip &ip, int port)
|
|||||||
if(err < 0)
|
if(err < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "In [%s::%s] Before END sock = %d, err = %d, errno = %d\n",__FILE__,__FUNCTION__,sock,err,WSAGetLastError());
|
fprintf(stderr, "In [%s::%s] Before END sock = %d, err = %d, errno = %d\n",__FILE__,__FUNCTION__,sock,err,WSAGetLastError());
|
||||||
//throwException(szBuf);
|
//throwException(szBuf);
|
||||||
|
disconnectSocket();
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "Valid recovery for connection sock = %d, err = %d, WSAGetLastError() = %d\n",sock,err,WSAGetLastError());
|
fprintf(stderr, "Valid recovery for connection sock = %d, err = %d, WSAGetLastError() = %d\n",sock,err,WSAGetLastError());
|
||||||
|
Reference in New Issue
Block a user