From b8a02a2b98e7b0e6a8a54cb140a873039d9c6d3d Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 30 Jun 2012 13:33:28 +0000 Subject: - setting thread names; - warning fixes; - code cleaning; - option to disable sounds during idle git-svn-id: http://svn.miranda-ng.org/main/trunk@692 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/modules/netlib/netlibopenconn.cpp | 438 ++++++++++++++-------------------- 1 file changed, 182 insertions(+), 256 deletions(-) (limited to 'src/modules/netlib') diff --git a/src/modules/netlib/netlibopenconn.cpp b/src/modules/netlib/netlibopenconn.cpp index 3bc19e684f..b96c27aa4d 100644 --- a/src/modules/netlib/netlibopenconn.cpp +++ b/src/modules/netlib/netlibopenconn.cpp @@ -81,8 +81,7 @@ int WaitUntilWritable(SOCKET s, DWORD dwTimeout) FD_ZERO(&writefd); FD_SET(s, &writefd); - switch(select(0, 0, &writefd, 0, &tv)) - { + switch(select(0, 0, &writefd, 0, &tv)) { case 0: SetLastError(ERROR_TIMEOUT); case SOCKET_ERROR: @@ -96,8 +95,7 @@ bool RecvUntilTimeout(struct NetlibConnection *nlc, char *buf, int len, int flag int nReceived = 0; DWORD dwTimeNow, dwCompleteTime = GetTickCount() + dwTimeout; - while ((dwTimeNow = GetTickCount()) < dwCompleteTime) - { + while ((dwTimeNow = GetTickCount()) < dwCompleteTime) { if (WaitUntilReadable(nlc->s, dwCompleteTime - dwTimeNow) <= 0) return false; nReceived = NLRecv(nlc, buf, len, flags); if (nReceived <= 0) return false; @@ -130,39 +128,36 @@ static int NetlibInitSocks4Connection(NetlibConnection *nlc, NetlibUser *nlu, NE //if cannot resolve host, try resolving through proxy (requires SOCKS4a) DWORD ip = DnsLookup(nlu, nloc->szHost); *(PDWORD)&pInit[4] = ip ? ip : 0x01000000; - if ( !ip) - { + if ( !ip) { memcpy(&pInit[len], nloc->szHost, nHostLen); len += nHostLen; } - if (NLSend(nlc, pInit, (int)len, MSG_DUMPPROXY) == SOCKET_ERROR) - { + if (NLSend(nlc, pInit, (int)len, MSG_DUMPPROXY) == SOCKET_ERROR) { NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "NLSend", GetLastError()); return 0; } char reply[8]; - if ( !RecvUntilTimeout(nlc, reply, sizeof(reply), MSG_DUMPPROXY, RECV_DEFAULT_TIMEOUT)) - { + if ( !RecvUntilTimeout(nlc, reply, sizeof(reply), MSG_DUMPPROXY, RECV_DEFAULT_TIMEOUT)) { NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "RecvUntilTimeout", GetLastError()); return 0; } - switch ((BYTE)reply[1]) - { - case 90: return 1; - case 91: SetLastError(ERROR_ACCESS_DENIED); break; - case 92: SetLastError(ERROR_CONNECTION_UNAVAIL); break; - case 93: SetLastError(ERROR_INVALID_ACCESS); break; - default: SetLastError(ERROR_INVALID_DATA); break; + switch ((BYTE)reply[1]) { + case 90: return 1; + case 91: SetLastError(ERROR_ACCESS_DENIED); break; + case 92: SetLastError(ERROR_CONNECTION_UNAVAIL); break; + case 93: SetLastError(ERROR_INVALID_ACCESS); break; + default: SetLastError(ERROR_INVALID_DATA); break; } NetlibLogf(nlu, "%s %d: Proxy connection failed (%x %u)", __FILE__, __LINE__, (BYTE)reply[1], GetLastError()); return 0; } static int NetlibInitSocks5Connection(struct NetlibConnection *nlc, struct NetlibUser *nlu, NETLIBOPENCONNECTION *nloc) -{ //rfc1928 +{ + //rfc1928 BYTE buf[258]; buf[0]=5; //yep, socks5 @@ -214,46 +209,42 @@ static int NetlibInitSocks5Connection(struct NetlibConnection *nlc, struct Netli } } - { - PBYTE pInit; - int nHostLen; - DWORD hostIP; + PBYTE pInit; + int nHostLen; + DWORD hostIP; - if (nlc->dnsThroughProxy) - { - hostIP = inet_addr(nloc->szHost); - if (hostIP == INADDR_NONE) - nHostLen = lstrlenA(nloc->szHost)+1; - else nHostLen = 4; - } - else - { - hostIP = DnsLookup(nlu, nloc->szHost); - if (hostIP == 0) - return 0; - nHostLen = 4; - } - pInit=(PBYTE)mir_alloc(6+nHostLen); - pInit[0]=5; //SOCKS5 - pInit[1]= nloc->flags & NLOCF_UDP ? 3 : 1; //connect or UDP - pInit[2]=0; //reserved - if (hostIP == INADDR_NONE) { //DNS lookup through proxy - pInit[3]=3; - pInit[4]=nHostLen-1; - memcpy(pInit+5, nloc->szHost, nHostLen-1); - } - else { - pInit[3]=1; - *(PDWORD)(pInit+4)=hostIP; - } - *(PWORD)(pInit+4+nHostLen)=htons(nloc->wPort); - if (NLSend(nlc, (char*)pInit, 6+nHostLen, MSG_DUMPPROXY) == SOCKET_ERROR) { - NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "NLSend", GetLastError()); - mir_free(pInit); + if (nlc->dnsThroughProxy) { + hostIP = inet_addr(nloc->szHost); + if (hostIP == INADDR_NONE) + nHostLen = lstrlenA(nloc->szHost)+1; + else nHostLen = 4; + } + else { + hostIP = DnsLookup(nlu, nloc->szHost); + if (hostIP == 0) return 0; - } + nHostLen = 4; + } + pInit=(PBYTE)mir_alloc(6+nHostLen); + pInit[0]=5; //SOCKS5 + pInit[1]= nloc->flags & NLOCF_UDP ? 3 : 1; //connect or UDP + pInit[2]=0; //reserved + if (hostIP == INADDR_NONE) { //DNS lookup through proxy + pInit[3]=3; + pInit[4]=nHostLen-1; + memcpy(pInit+5, nloc->szHost, nHostLen-1); + } + else { + pInit[3]=1; + *(PDWORD)(pInit+4)=hostIP; + } + *(PWORD)(pInit+4+nHostLen)=htons(nloc->wPort); + if (NLSend(nlc, (char*)pInit, 6+nHostLen, MSG_DUMPPROXY) == SOCKET_ERROR) { + NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "NLSend", GetLastError()); mir_free(pInit); + return 0; } + mir_free(pInit); if ( !RecvUntilTimeout(nlc, (char*)buf, 5, MSG_DUMPPROXY, RECV_DEFAULT_TIMEOUT)) { NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "RecvUntilTimeout", GetLastError()); @@ -264,52 +255,50 @@ static int NetlibInitSocks5Connection(struct NetlibConnection *nlc, struct Netli const char* err = "Unknown response"; if (buf[0] != 5) SetLastError(ERROR_BAD_FORMAT); - else - { - switch(buf[1]) - { - case 1: SetLastError(ERROR_GEN_FAILURE); err = "General failure"; break; - case 2: SetLastError(ERROR_ACCESS_DENIED); err = "Connection not allowed by ruleset"; break; - case 3: SetLastError(WSAENETUNREACH); err = "Network unreachable"; break; - case 4: SetLastError(WSAEHOSTUNREACH); err = "Host unreachable"; break; - case 5: SetLastError(WSAECONNREFUSED); err = "Connection refused by destination host"; break; - case 6: SetLastError(WSAETIMEDOUT); err = "TTL expired"; break; - case 7: SetLastError(ERROR_CALL_NOT_IMPLEMENTED); err = "Command not supported / protocol error"; break; - case 8: SetLastError(ERROR_INVALID_ADDRESS); err = "Address type not supported"; break; - default: SetLastError(ERROR_INVALID_DATA); break; + else { + switch(buf[1]) { + case 1: SetLastError(ERROR_GEN_FAILURE); err = "General failure"; break; + case 2: SetLastError(ERROR_ACCESS_DENIED); err = "Connection not allowed by ruleset"; break; + case 3: SetLastError(WSAENETUNREACH); err = "Network unreachable"; break; + case 4: SetLastError(WSAEHOSTUNREACH); err = "Host unreachable"; break; + case 5: SetLastError(WSAECONNREFUSED); err = "Connection refused by destination host"; break; + case 6: SetLastError(WSAETIMEDOUT); err = "TTL expired"; break; + case 7: SetLastError(ERROR_CALL_NOT_IMPLEMENTED); err = "Command not supported / protocol error"; break; + case 8: SetLastError(ERROR_INVALID_ADDRESS); err = "Address type not supported"; break; + default: SetLastError(ERROR_INVALID_DATA); break; } } NetlibLogf(nlu, "%s %d: Proxy conection failed. %s.", __FILE__, __LINE__, err); return 0; } - { - int nRecvSize = 0; - switch(buf[3]) { - case 1:// ipv4 addr - nRecvSize = 5; - break; - case 3:// dns name addr - nRecvSize = buf[4] + 2; - break; - case 4:// ipv6 addr - nRecvSize = 17; - break; - default: - NetlibLogf(nlu, "%s %d: %s() unknown address type (%u)", __FILE__, __LINE__, "NetlibInitSocks5Connection", (int)buf[3]); - return 0; - } - if ( !RecvUntilTimeout(nlc, (char*)buf, nRecvSize, MSG_DUMPPROXY, RECV_DEFAULT_TIMEOUT)) { - NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "RecvUntilTimeout", GetLastError()); - return 0; - } + + int nRecvSize = 0; + switch(buf[3]) { + case 1:// ipv4 addr + nRecvSize = 5; + break; + case 3:// dns name addr + nRecvSize = buf[4] + 2; + break; + case 4:// ipv6 addr + nRecvSize = 17; + break; + default: + NetlibLogf(nlu, "%s %d: %s() unknown address type (%u)", __FILE__, __LINE__, "NetlibInitSocks5Connection", (int)buf[3]); + return 0; } + if ( !RecvUntilTimeout(nlc, (char*)buf, nRecvSize, MSG_DUMPPROXY, RECV_DEFAULT_TIMEOUT)) { + NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "RecvUntilTimeout", GetLastError()); + return 0; + } //connected return 1; } static bool NetlibInitHttpsConnection(struct NetlibConnection *nlc, struct NetlibUser *nlu, NETLIBOPENCONNECTION *nloc) -{ //rfc2817 +{ + //rfc2817 NETLIBHTTPREQUEST nlhrSend = {0}, *nlhrReply; char szUrl[512]; @@ -317,11 +306,8 @@ static bool NetlibInitHttpsConnection(struct NetlibConnection *nlc, struct Netli nlhrSend.requestType = REQUEST_CONNECT; nlhrSend.flags = NLHRF_GENERATEHOST | NLHRF_DUMPPROXY | NLHRF_SMARTAUTHHEADER | NLHRF_HTTP11 | NLHRF_NOPROXY | NLHRF_REDIRECT; if (nlc->dnsThroughProxy) - { mir_snprintf(szUrl, SIZEOF(szUrl), "%s:%u", nloc->szHost, nloc->wPort); - } - else - { + else { DWORD ip = DnsLookup(nlu, nloc->szHost); if (ip == 0) return false; mir_snprintf(szUrl, SIZEOF(szUrl), "%s:%u", inet_ntoa(*(PIN_ADDR)&ip), nloc->wPort); @@ -330,18 +316,18 @@ static bool NetlibInitHttpsConnection(struct NetlibConnection *nlc, struct Netli nlc->usingHttpGateway = true; - if (NetlibHttpSendRequest((WPARAM)nlc, (LPARAM)&nlhrSend) == SOCKET_ERROR) - { + if (NetlibHttpSendRequest((WPARAM)nlc, (LPARAM)&nlhrSend) == SOCKET_ERROR) { nlc->usingHttpGateway = false; return 0; } + nlhrReply = NetlibHttpRecv(nlc, MSG_DUMPPROXY | MSG_RAW, MSG_DUMPPROXY | MSG_RAW, true); nlc->usingHttpGateway = false; - if (nlhrReply == NULL) return false; - if (nlhrReply->resultCode < 200 || nlhrReply->resultCode >= 300) - { - if (nlhrReply->resultCode == 403 && nlc->dnsThroughProxy) - { + if (nlhrReply == NULL) + return false; + + if (nlhrReply->resultCode < 200 || nlhrReply->resultCode >= 300) { + if (nlhrReply->resultCode == 403 && nlc->dnsThroughProxy) { NetlibHttpFreeRequestStruct(0, (LPARAM)nlhrReply); nlc->dnsThroughProxy = 0; return NetlibInitHttpsConnection(nlc, nlu, nloc); @@ -386,8 +372,7 @@ static bool my_connectIPv4(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) if (dwTimeout == 0) dwTimeout = 30; // this is for XP SP2 where there is a default connection attempt limit of 10/second - if (connectionTimeout) - { + if (connectionTimeout) { WaitForSingleObject(hConnectionOpenMutex, 10000); int waitdiff = GetTickCount() - g_LastConnectionTick; if (waitdiff < connectionTimeout) SleepEx(connectionTimeout, TRUE); @@ -402,8 +387,7 @@ static bool my_connectIPv4(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) SOCKADDR_IN sin = {0}; sin.sin_family = AF_INET; - if (nlc->proxyType) - { + if (nlc->proxyType) { if ( !nlc->szProxyServer) return false; if (nloc) @@ -414,8 +398,7 @@ static bool my_connectIPv4(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) sin.sin_port = htons(nlc->wProxyPort); he = gethostbyname(nlc->szProxyServer); } - else - { + else { if ( !nloc || !nloc->szHost || nloc->szHost[0] == '[' || strchr(nloc->szHost, ':')) return false; NetlibLogf(nlc->nlu, "(%p) Connecting to server %s:%d....", nlc, nloc->szHost, nloc->wPort); @@ -423,8 +406,7 @@ static bool my_connectIPv4(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) he = gethostbyname(nloc->szHost); } - for (char** har = he->h_addr_list; *har && !Miranda_Terminated(); ++har) - { + for (char** har = he->h_addr_list; *har && !Miranda_Terminated(); ++har) { sin.sin_addr.s_addr = *(u_long*)*har; char* szIp = NetlibAddressToString((SOCKADDR_INET_M*)&sin); @@ -433,36 +415,33 @@ static bool my_connectIPv4(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) retry: nlc->s = socket(AF_INET, nloc->flags & NLOCF_UDP ? SOCK_DGRAM : SOCK_STREAM, 0); - if (nlc->s == INVALID_SOCKET) return false; + if (nlc->s == INVALID_SOCKET) + return false; // return the socket to non blocking - if (ioctlsocket(nlc->s, FIONBIO, ¬blocking) != 0) return false; + if (ioctlsocket(nlc->s, FIONBIO, ¬blocking) != 0) + return false; - if (nlc->nlu->settings.specifyOutgoingPorts && nlc->nlu->settings.szOutgoingPorts && nlc->nlu->settings.szOutgoingPorts[0]) - { + if (nlc->nlu->settings.specifyOutgoingPorts && nlc->nlu->settings.szOutgoingPorts && nlc->nlu->settings.szOutgoingPorts[0]) { if ( !BindSocketToPort(nlc->nlu->settings.szOutgoingPorts, nlc->s, INVALID_SOCKET, &nlc->nlu->inportnum)) NetlibLogf(nlc->nlu, "Netlib connect: Not enough ports for outgoing connections specified"); } // try a connect - if (connect(nlc->s, (LPSOCKADDR)&sin, sizeof(sin)) == 0) - { + if (connect(nlc->s, (LPSOCKADDR)&sin, sizeof(sin)) == 0) { rc = 0; break; } // didn't work, was it cos of nonblocking? - if (WSAGetLastError() != WSAEWOULDBLOCK) - { + if (WSAGetLastError() != WSAEWOULDBLOCK) { rc = SOCKET_ERROR; - closesocket(nlc->s); nlc->s = INVALID_SOCKET; continue; } - for (;;) - { + while (true) { fd_set r, w, e; FD_ZERO(&r); FD_ZERO(&w); FD_ZERO(&e); FD_SET(nlc->s, &r); @@ -471,48 +450,39 @@ retry: if ((rc = select(0, &r, &w, &e, &tv)) == SOCKET_ERROR) break; - if (rc > 0) - { - if (FD_ISSET(nlc->s, &w)) - { + if (rc > 0) { + if (FD_ISSET(nlc->s, &w)){ // connection was successful rc = 0; } - if (FD_ISSET(nlc->s, &r)) - { + if (FD_ISSET(nlc->s, &r)) { // connection was closed rc = SOCKET_ERROR; lasterr = WSAECONNRESET; } - if (FD_ISSET(nlc->s, &e)) - { + if (FD_ISSET(nlc->s, &e)) { // connection failed. int len = sizeof(lasterr); rc = SOCKET_ERROR; getsockopt(nlc->s, SOL_SOCKET, SO_ERROR, (char*)&lasterr, &len); - if (lasterr == WSAEADDRINUSE && ++retrycnt <= 2) - { + if (lasterr == WSAEADDRINUSE && ++retrycnt <= 2) { closesocket(nlc->s); goto retry; } } break; } - else if (Miranda_Terminated()) - { + else if (Miranda_Terminated()) { rc = SOCKET_ERROR; lasterr = ERROR_TIMEOUT; break; } - else if (nloc->cbSize == sizeof(NETLIBOPENCONNECTION) && nloc->flags & NLOCF_V2 && - nloc->waitcallback != NULL && nloc->waitcallback(&dwTimeout) == 0) - { + else if (nloc->cbSize == sizeof(NETLIBOPENCONNECTION) && nloc->flags & NLOCF_V2 && nloc->waitcallback != NULL && nloc->waitcallback(&dwTimeout) == 0) { rc = SOCKET_ERROR; lasterr = ERROR_TIMEOUT; break; } - if (--dwTimeout == 0) - { + if (--dwTimeout == 0) { rc = SOCKET_ERROR; lasterr = ERROR_TIMEOUT; break; @@ -543,8 +513,7 @@ static bool my_connectIPv6(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) if (dwTimeout == 0) dwTimeout = 30; // this is for XP SP2 where there is a default connection attempt limit of 10/second - if (connectionTimeout) - { + if (connectionTimeout) { WaitForSingleObject(hConnectionOpenMutex, 10000); int waitdiff = GetTickCount() - g_LastConnectionTick; if (waitdiff < connectionTimeout) SleepEx(connectionTimeout, TRUE); @@ -560,20 +529,18 @@ static bool my_connectIPv6(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) hints.ai_family = AF_UNSPEC; - if (nloc->flags & NLOCF_UDP) - { + if (nloc->flags & NLOCF_UDP) { hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = IPPROTO_UDP; } - else - { + else { hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; } - if (nlc->proxyType) - { - if ( !nlc->szProxyServer) return false; + if (nlc->proxyType) { + if ( !nlc->szProxyServer) + return false; if (nloc) NetlibLogf(nlc->nlu, "(%p) Connecting to proxy %s:%d for %s:%d ....", nlc, nlc->szProxyServer, nlc->wProxyPort, nloc->szHost, nloc->wPort); @@ -581,40 +548,39 @@ static bool my_connectIPv6(NetlibConnection *nlc, NETLIBOPENCONNECTION * nloc) NetlibLogf(nlc->nlu, "(%p) Connecting to proxy %s:%d ....", nlc, nlc->szProxyServer, nlc->wProxyPort); _itoa(nlc->wProxyPort, szPort, 10); - if (MyGetaddrinfo(nlc->szProxyServer, szPort, &hints, &air)) - { + if (MyGetaddrinfo(nlc->szProxyServer, szPort, &hints, &air)) { NetlibLogf(nlc->nlu, "%s %d: %s() for host %s failed (%u)", __FILE__, __LINE__, "getaddrinfo", nlc->szProxyServer, WSAGetLastError()); return false; } } - else - { - if ( !nloc || !nloc->szHost) return false; + else { + if ( !nloc || !nloc->szHost) + return false; + NetlibLogf(nlc->nlu, "(%p) Connecting to server %s:%d....", nlc, nloc->szHost, nloc->wPort); _itoa(nlc->nloc.wPort, szPort, 10); - if (MyGetaddrinfo(nlc->nloc.szHost, szPort, &hints, &air)) - { + if (MyGetaddrinfo(nlc->nloc.szHost, szPort, &hints, &air)) { NetlibLogf(nlc->nlu, "%s %d: %s() for host %s failed (%u)", __FILE__, __LINE__, "getaddrinfo", nlc->nloc.szHost, WSAGetLastError()); return false; } } - for (ai = air; ai && !Miranda_Terminated(); ai = ai->ai_next) - { + for (ai = air; ai && !Miranda_Terminated(); ai = ai->ai_next) { char* szIp = NetlibAddressToString((SOCKADDR_INET_M*)ai->ai_addr); NetlibLogf(nlc->nlu, "(%p) Connecting to ip %s ....", nlc, szIp); mir_free(szIp); retry: nlc->s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (nlc->s == INVALID_SOCKET) return false; + if (nlc->s == INVALID_SOCKET) + return false; // return the socket to non blocking - if (ioctlsocket(nlc->s, FIONBIO, ¬blocking) != 0) return false; + if (ioctlsocket(nlc->s, FIONBIO, ¬blocking) != 0) + return false; - if (nlc->nlu->settings.specifyOutgoingPorts && nlc->nlu->settings.szOutgoingPorts && nlc->nlu->settings.szOutgoingPorts[0]) - { + if (nlc->nlu->settings.specifyOutgoingPorts && nlc->nlu->settings.szOutgoingPorts && nlc->nlu->settings.szOutgoingPorts[0]) { SOCKET s = ai->ai_family == AF_INET ? nlc->s : INVALID_SOCKET; SOCKET s6 = ai->ai_family == AF_INET6 ? nlc->s : INVALID_SOCKET; if ( !BindSocketToPort(nlc->nlu->settings.szOutgoingPorts, s, s6, &nlc->nlu->inportnum)) @@ -622,24 +588,20 @@ retry: } // try a connect - if (connect(nlc->s, ai->ai_addr, (int)ai->ai_addrlen) == 0) - { + if (connect(nlc->s, ai->ai_addr, (int)ai->ai_addrlen) == 0) { rc = 0; break; } // didn't work, was it cos of nonblocking? - if (WSAGetLastError() != WSAEWOULDBLOCK) - { + if (WSAGetLastError() != WSAEWOULDBLOCK) { rc = SOCKET_ERROR; - closesocket(nlc->s); nlc->s = INVALID_SOCKET; continue; } - for (;;) // timeout loop - { + while (true) { // timeout loop fd_set r, w, e; FD_ZERO(&r); FD_ZERO(&w); FD_ZERO(&e); FD_SET(nlc->s, &r); @@ -648,22 +610,18 @@ retry: if ((rc = select(0, &r, &w, &e, &tv)) == SOCKET_ERROR) break; - if (rc > 0) - { - if (FD_ISSET(nlc->s, &w)) - { + if (rc > 0) { + if (FD_ISSET(nlc->s, &w)){ // connection was successful rc = 0; lasterr = 0; } - if (FD_ISSET(nlc->s, &r)) - { + if (FD_ISSET(nlc->s, &r)) { // connection was closed rc = SOCKET_ERROR; lasterr = WSAECONNRESET; } - if (FD_ISSET(nlc->s, &e)) - { + if (FD_ISSET(nlc->s, &e)) { // connection failed. int len = sizeof(lasterr); rc = SOCKET_ERROR; @@ -677,21 +635,17 @@ retry: } break; } - else if (Miranda_Terminated()) - { + else if (Miranda_Terminated()) { rc = SOCKET_ERROR; lasterr = ERROR_TIMEOUT; break; } - else if (nloc->cbSize == sizeof(NETLIBOPENCONNECTION) && nloc->flags & NLOCF_V2 && - nloc->waitcallback != NULL && nloc->waitcallback(&dwTimeout) == 0) - { + else if (nloc->cbSize == sizeof(NETLIBOPENCONNECTION) && nloc->flags & NLOCF_V2 && nloc->waitcallback != NULL && nloc->waitcallback(&dwTimeout) == 0) { rc = SOCKET_ERROR; lasterr = ERROR_TIMEOUT; break; } - if (--dwTimeout == 0) - { + if (--dwTimeout == 0) { rc = SOCKET_ERROR; lasterr = ERROR_TIMEOUT; break; @@ -726,8 +680,7 @@ static int NetlibHttpFallbackToDirect(struct NetlibConnection *nlc, struct Netli nlc->proxyAuthNeeded = false; nlc->proxyType = 0; mir_free(nlc->szProxyServer); nlc->szProxyServer = NULL; - if ( !my_connect(nlc, nloc)) - { + if ( !my_connect(nlc, nloc)) { NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "connect", WSAGetLastError()); return false; } @@ -742,16 +695,11 @@ bool NetlibDoConnect(NetlibConnection *nlc) mir_free(nlc->szProxyServer); nlc->szProxyServer = NULL; bool usingProxy = false, forceHttps = false; - if (nlu->settings.useProxy) - { + if (nlu->settings.useProxy) { if (nlu->settings.proxyType == PROXYTYPE_IE) - { usingProxy = NetlibGetIeProxyConn(nlc, false); - } - else - { - if (nlu->settings.szProxyServer && nlu->settings.szProxyServer[0]) - { + else { + if (nlu->settings.szProxyServer && nlu->settings.szProxyServer[0]) { nlc->szProxyServer = mir_strdup(nlu->settings.szProxyServer); nlc->wProxyPort = nlu->settings.wProxyPort; nlc->proxyType = nlu->settings.proxyType; @@ -761,34 +709,26 @@ bool NetlibDoConnect(NetlibConnection *nlc) } retry: - if (usingProxy) - { - if ( !my_connect(nlc, nloc)) - { + if (usingProxy) { + if ( !my_connect(nlc, nloc)) { usingProxy = false; nlc->proxyType = 0; } } + if ( !usingProxy) - { my_connect(nlc, nloc); - } - if (nlc->s == INVALID_SOCKET) - { - if (usingProxy && (nlc->proxyType == PROXYTYPE_HTTPS || nlc->proxyType == PROXYTYPE_HTTP)) - { + if (nlc->s == INVALID_SOCKET) { + if (usingProxy && (nlc->proxyType == PROXYTYPE_HTTPS || nlc->proxyType == PROXYTYPE_HTTP)) { usingProxy = false; - if ( !NetlibHttpFallbackToDirect(nlc, nlu, nloc)) - { + if ( !NetlibHttpFallbackToDirect(nlc, nlu, nloc)) { NetlibLogf(nlu, "%s %d: %s() failed (%u)", __FILE__, __LINE__, "connect", WSAGetLastError()); return false; } } - else - { - if (nlu->settings.useProxy && !usingProxy && nlu->settings.proxyType == PROXYTYPE_IE && !forceHttps) - { + else { + if (nlu->settings.useProxy && !usingProxy && nlu->settings.proxyType == PROXYTYPE_IE && !forceHttps) { forceHttps = true; usingProxy = NetlibGetIeProxyConn(nlc, true); if (usingProxy) goto retry; @@ -798,25 +738,24 @@ retry: } } - if (usingProxy && !((nloc->flags & (NLOCF_HTTP | NLOCF_SSL)) == NLOCF_HTTP && - (nlc->proxyType == PROXYTYPE_HTTP || nlc->proxyType == PROXYTYPE_HTTPS))) - { - if ( !WaitUntilWritable(nlc->s, 30000)) return false; + if (usingProxy && !((nloc->flags & (NLOCF_HTTP | NLOCF_SSL)) == NLOCF_HTTP && (nlc->proxyType == PROXYTYPE_HTTP || nlc->proxyType == PROXYTYPE_HTTPS))) { + if ( !WaitUntilWritable(nlc->s, 30000)) + return false; - switch (nlc->proxyType) - { + switch (nlc->proxyType) { case PROXYTYPE_SOCKS4: - if ( !NetlibInitSocks4Connection(nlc, nlu, nloc)) return false; + if ( !NetlibInitSocks4Connection(nlc, nlu, nloc)) + return false; break; case PROXYTYPE_SOCKS5: - if ( !NetlibInitSocks5Connection(nlc, nlu, nloc)) return false; + if ( !NetlibInitSocks5Connection(nlc, nlu, nloc)) + return false; break; case PROXYTYPE_HTTPS: nlc->proxyAuthNeeded = true; - if ( !NetlibInitHttpsConnection(nlc, nlu, nloc)) - { + if ( !NetlibInitHttpsConnection(nlc, nlu, nloc)) { usingProxy = false; if ( !NetlibHttpFallbackToDirect(nlc, nlu, nloc)) return false; @@ -825,21 +764,18 @@ retry: case PROXYTYPE_HTTP: nlc->proxyAuthNeeded = true; - if ( !(nlu->user.flags & NUF_HTTPGATEWAY || nloc->flags & NLOCF_HTTPGATEWAY) || nloc->flags & NLOCF_SSL) - { + if ( !(nlu->user.flags & NUF_HTTPGATEWAY || nloc->flags & NLOCF_HTTPGATEWAY) || nloc->flags & NLOCF_SSL) { //NLOCF_HTTP not specified and no HTTP gateway available: try HTTPS - if ( !NetlibInitHttpsConnection(nlc, nlu, nloc)) - { + if ( !NetlibInitHttpsConnection(nlc, nlu, nloc)) { //can't do HTTPS: try direct usingProxy = false; if ( !NetlibHttpFallbackToDirect(nlc, nlu, nloc)) return false; } } - else - { - if ( !NetlibInitHttpConnection(nlc, nlu, nloc)) return false; - } + else if ( !NetlibInitHttpConnection(nlc, nlu, nloc)) + return false; + break; default: @@ -848,8 +784,7 @@ retry: return false; } } - else if (nloc->flags & NLOCF_HTTPGATEWAY) - { + else if (nloc->flags & NLOCF_HTTPGATEWAY) { if ( !NetlibInitHttpConnection(nlc, nlu, nloc)) return false; nlc->usingDirectHttpGateway = true; } @@ -857,9 +792,7 @@ retry: NetlibLogf(nlu, "(%d) Connected to %s:%d", nlc->s, nloc->szHost, nloc->wPort); if (NLOCF_SSL & nloc->flags) - { return NetlibStartSsl((WPARAM)nlc, 0) != 0; - } return true; } @@ -868,11 +801,8 @@ bool NetlibReconnect(NetlibConnection *nlc) { char buf[4]; bool opened = nlc->s != INVALID_SOCKET; - - if (opened) - { - switch (WaitUntilReadable(nlc->s, 0, true)) - { + if (opened) { + switch (WaitUntilReadable(nlc->s, 0, true)) { case SOCKET_ERROR: opened = false; break; @@ -890,16 +820,15 @@ bool NetlibReconnect(NetlibConnection *nlc) NetlibDoClose(nlc, true); } - if ( !opened) - { - if (Miranda_Terminated()) return false; - if (nlc->usingHttpGateway) - { + if ( !opened) { + if (Miranda_Terminated()) + return false; + + if (nlc->usingHttpGateway) { nlc->proxyAuthNeeded = true; return my_connect(nlc, &nlc->nloc); } - else - return NetlibDoConnect(nlc); + return NetlibDoConnect(nlc); } return true; } @@ -907,19 +836,18 @@ bool NetlibReconnect(NetlibConnection *nlc) INT_PTR NetlibOpenConnection(WPARAM wParam, LPARAM lParam) { NETLIBOPENCONNECTION *nloc = (NETLIBOPENCONNECTION*)lParam; - struct NetlibUser *nlu = (struct NetlibUser*)wParam; - struct NetlibConnection *nlc; - - NetlibLogf(nlu, "Connection request to %s:%d (Flags %x)....", nloc->szHost, nloc->wPort, nloc->flags); - - if (GetNetlibHandleType(nlu) != NLH_USER || !(nlu->user.flags & NUF_OUTGOING) || nloc == NULL || - (nloc->cbSize != NETLIBOPENCONNECTION_V1_SIZE && nloc->cbSize != sizeof(NETLIBOPENCONNECTION)) || - nloc->szHost == NULL || nloc->wPort == 0) - { + if (nloc == NULL || nloc->cbSize != sizeof(NETLIBOPENCONNECTION) || nloc->szHost == NULL || nloc->wPort == 0) { SetLastError(ERROR_INVALID_PARAMETER); return 0; } - nlc = (struct NetlibConnection*)mir_calloc(sizeof(struct NetlibConnection)); + + NetlibUser *nlu = (NetlibUser*)wParam; + if (GetNetlibHandleType(nlu) != NLH_USER || !(nlu->user.flags & NUF_OUTGOING)) + return 0; + + NetlibLogf(nlu, "Connection request to %s:%d (Flags %x)....", nloc->szHost, nloc->wPort, nloc->flags); + + NetlibConnection *nlc = (NetlibConnection*)mir_calloc(sizeof(struct NetlibConnection)); nlc->handleType = NLH_CONNECTION; nlc->nlu = nlu; nlc->nloc = *nloc; @@ -934,17 +862,14 @@ INT_PTR NetlibOpenConnection(WPARAM wParam, LPARAM lParam) NetlibInitializeNestedCS(&nlc->ncsSend); NetlibInitializeNestedCS(&nlc->ncsRecv); - if ( !NetlibDoConnect(nlc)) - { + if ( !NetlibDoConnect(nlc)) { FreePartiallyInitedConnection(nlc); return 0; } - if (iUPnPCleanup == 0) - { + if (iUPnPCleanup == 0) { EnterCriticalSection(&csNetlibUser); - if (iUPnPCleanup == 0) - { + if (iUPnPCleanup == 0) { iUPnPCleanup = 1; forkthread(NetlibUPnPCleanup, 0, NULL); } @@ -957,7 +882,8 @@ INT_PTR NetlibOpenConnection(WPARAM wParam, LPARAM lParam) INT_PTR NetlibStartSsl(WPARAM wParam, LPARAM lParam) { NetlibConnection *nlc = (NetlibConnection*)wParam; - if (nlc == NULL) return 0; + if (nlc == NULL) + return 0; NETLIBSSL *sp = (NETLIBSSL*)lParam; const char *szHost = sp ? sp->host : nlc->nloc.szHost; -- cgit v1.2.3