static int WSAAPI my_connect(SOCKET s, const struct sockaddr *sa, int sa_len) { int ret; struct sockaddr_in *sin = (struct sockaddr_in *)sa; if (sa->sa_family == AF_INET && sin->sin_addr.s_addr == inet_addr(LOCALHOST)) { connect_flag = 1; return 0; } gg_win32_hook_set_enabled(&connect_hook, 0); ret = connect(s, sa, sa_len); gg_win32_hook_set_enabled(&connect_hook, 1); return ret; }
int connect(int socket, const struct sockaddr *address, socklen_t address_len) #endif { struct sockaddr_in sin; #ifdef _WIN32 int ret; #endif if (connected && test_mode == TEST_MODE_SEND_NAT) { memcpy(&sin, address, address_len); sin.sin_addr.s_addr = INADDR_NONE; address = (struct sockaddr*) &sin; } #ifdef _WIN32 gg_win32_hook_set_enabled(&connect_hook, 0); ret = connect(socket, address, address_len); gg_win32_hook_set_enabled(&connect_hook, 1); return ret; #else return __connect(socket, address, address_len); #endif }