Merge pull request #33070 from Faless/net/fix_connect

Use WSAConnect instead of connect on Windows.
This commit is contained in:
Rémi Verschelde 2019-10-25 21:17:50 +02:00 committed by GitHub
commit dac22c4b13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -70,6 +70,7 @@
#define SOCK_CBUF(x) x #define SOCK_CBUF(x) x
#define SOCK_IOCTL ioctl #define SOCK_IOCTL ioctl
#define SOCK_CLOSE ::close #define SOCK_CLOSE ::close
#define SOCK_CONNECT(p_sock, p_addr, p_addr_len) ::connect(p_sock, p_addr, p_addr_len)
/* Windows */ /* Windows */
#elif defined(WINDOWS_ENABLED) #elif defined(WINDOWS_ENABLED)
@ -83,6 +84,9 @@
#define SOCK_CBUF(x) (const char *)(x) #define SOCK_CBUF(x) (const char *)(x)
#define SOCK_IOCTL ioctlsocket #define SOCK_IOCTL ioctlsocket
#define SOCK_CLOSE closesocket #define SOCK_CLOSE closesocket
// connect is broken on windows under certain conditions, reasons unknown:
// See https://github.com/godotengine/webrtc-native/issues/6
#define SOCK_CONNECT(p_sock, p_addr, p_addr_len) ::WSAConnect(p_sock, p_addr, p_addr_len, NULL, NULL, NULL, NULL)
// Workaround missing flag in MinGW // Workaround missing flag in MinGW
#if defined(__MINGW32__) && !defined(SIO_UDP_NETRESET) #if defined(__MINGW32__) && !defined(SIO_UDP_NETRESET)
@ -409,7 +413,7 @@ Error NetSocketPosix::connect_to_host(IP_Address p_host, uint16_t p_port) {
struct sockaddr_storage addr; struct sockaddr_storage addr;
size_t addr_size = _set_addr_storage(&addr, p_host, p_port, _ip_type); size_t addr_size = _set_addr_storage(&addr, p_host, p_port, _ip_type);
if (::connect(_sock, (struct sockaddr *)&addr, addr_size) != 0) { if (SOCK_CONNECT(_sock, (struct sockaddr *)&addr, addr_size) != 0) {
NetError err = _get_socket_error(); NetError err = _get_socket_error();