diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-10-25 21:17:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-25 21:17:50 +0200 |
commit | dac22c4b13ae63ddab511573d53870e4a476dcda (patch) | |
tree | 651c2f15644b5b26c5a1b80d868d0030e0b43deb | |
parent | 81373b9633bdcd143b8417865f1ea31c95ab41a1 (diff) | |
parent | d780570faf6eb2bb8b039fd1eea1051b58a3297b (diff) |
Merge pull request #33070 from Faless/net/fix_connect
Use WSAConnect instead of connect on Windows.
-rw-r--r-- | drivers/unix/net_socket_posix.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/unix/net_socket_posix.cpp b/drivers/unix/net_socket_posix.cpp index da46b393c6..5f99a40c79 100644 --- a/drivers/unix/net_socket_posix.cpp +++ b/drivers/unix/net_socket_posix.cpp @@ -70,6 +70,7 @@ #define SOCK_CBUF(x) x #define SOCK_IOCTL ioctl #define SOCK_CLOSE ::close +#define SOCK_CONNECT(p_sock, p_addr, p_addr_len) ::connect(p_sock, p_addr, p_addr_len) /* Windows */ #elif defined(WINDOWS_ENABLED) @@ -83,6 +84,9 @@ #define SOCK_CBUF(x) (const char *)(x) #define SOCK_IOCTL ioctlsocket #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 #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; 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(); |