From 575a1c5b794f3167ef0754cba6d9df85c497b89a Mon Sep 17 00:00:00 2001 From: cora32 Date: Mon, 24 Nov 2014 02:22:45 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=8B=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=83=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BA=D0=B8=2010038?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- connector.cpp | 46 +++++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/connector.cpp b/connector.cpp index 43a5240..7e7dd03 100644 --- a/connector.cpp +++ b/connector.cpp @@ -1467,17 +1467,10 @@ int Connector::_EstablishConnection(char *ip, int port, char *request, conSTR *C stt->doEmitionRedFoundData("[Cannot create socket]"); CSSOCKET(sock); - Sleep(500); + Sleep(100); sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); }; - while(WSAGetLastError() == 10038) - { - if(gDebugMode) stt->doEmitionDebugFoundData("10038 occured - [" + QString(ip) + ":" + QString::number(port) + "]"); - - CSSOCKET(sock); - sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); - }; #if defined(WIN32) u_long FAR cmd = 1; if( ioctlsocket( sock , FIONBIO, &cmd ) != 0 ) @@ -1494,38 +1487,37 @@ int Connector::_EstablishConnection(char *ip, int port, char *request, conSTR *C linger.l_linger = 10; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on)); setsockopt(sock, SOL_SOCKET, SO_LINGER, (const char *) &linger, sizeof(linger)); - - fd_set read_fs; - FD_ZERO(&read_fs); - FD_SET(sock, &read_fs); int iError, iResult = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); - + while(sock == INVALID_SOCKET) + { + if(gDebugMode) stt->doEmitionDebugFoundData("[Invalid socket]: " + QString::number(WSAGetLastError())); + CSSOCKET(sock); + Sleep(100); + sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on)); + setsockopt(sock, SOL_SOCKET, SO_LINGER, (const char *) &linger, sizeof(linger)); + iResult = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); + }; if(iResult == SOCKET_ERROR) { iError = WSAGetLastError(); - while(iError == 10038) - { - if(gDebugMode) stt->doEmitionDebugFoundData("10038 occured - [" + QString(ip) + ":" + QString::number(port) + "]"); - - CSSOCKET(sock); - sock = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); - iResult = connect(sock, (sockaddr*)&sockAddr, sizeof(sockAddr)); - iError = WSAGetLastError(); - }; - + if(iError == 10035) - { + { + fd_set read_fs; + FD_ZERO(&read_fs); + FD_SET(sock, &read_fs); timeval tv = { gTimeOut, 0 }; - iResult = select(sock + 1, NULL, &read_fs, NULL, &tv); - int cErrCode; + iResult = select(sock + 1, NULL, &read_fs, NULL, &tv); + if (iResult == SOCKET_ERROR) { ++offlines; stt->doEmitionRedFoundData("[Omitting IP] Select error - " + - QString::number(cErrCode) + + QString::number(WSAGetLastError()) + " - " + QString(ip) + ":" + QString::number(port)); } else