diff options
| author | Fabio Alessandrelli | 2016-10-22 07:23:07 +0200 |
|---|---|---|
| committer | Fabio Alessandrelli | 2016-12-11 12:35:06 +0100 |
| commit | b3443fd84889ddc8e8a7d9d90a759497d1cdb776 (patch) | |
| tree | 6a2088a211562b32d8d6588471f8c255fff6b3ac /drivers/unix/stream_peer_tcp_posix.cpp | |
| parent | 5546929712bb2e410319affb6ba2813c0108ba23 (diff) | |
| download | godot-b3443fd84889ddc8e8a7d9d90a759497d1cdb776.tar.gz godot-b3443fd84889ddc8e8a7d9d90a759497d1cdb776.tar.zst godot-b3443fd84889ddc8e8a7d9d90a759497d1cdb776.zip | |
Pass correct address size (ipv4,ipv6) to socket connect, bind, sendto
The address size passed to network system calls now reflects the the actual IP type (v4 or v6).
Fix Windows and OSX ipv6 sockets
(cherry picked from commit 80e911647c5df21c5b6a06876f1d48e21cd1f5fc)
Diffstat (limited to 'drivers/unix/stream_peer_tcp_posix.cpp')
| -rw-r--r-- | drivers/unix/stream_peer_tcp_posix.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/unix/stream_peer_tcp_posix.cpp b/drivers/unix/stream_peer_tcp_posix.cpp index 5a63a512e..f2915b0a1 100644 --- a/drivers/unix/stream_peer_tcp_posix.cpp +++ b/drivers/unix/stream_peer_tcp_posix.cpp @@ -98,9 +98,9 @@ Error StreamPeerTCPPosix::_poll_connection(bool p_block) const { }; struct sockaddr_storage their_addr; - _set_sockaddr(&their_addr, peer_host, peer_port); + size_t addr_size = _set_sockaddr(&their_addr, peer_host, peer_port); - if (::connect(sockfd, (struct sockaddr *)&their_addr,sizeof(their_addr)) == -1) { + if (::connect(sockfd, (struct sockaddr *)&their_addr,addr_size) == -1) { if (errno == EISCONN) { status = STATUS_CONNECTED; @@ -153,10 +153,10 @@ Error StreamPeerTCPPosix::connect(const IP_Address& p_host, uint16_t p_port) { #endif struct sockaddr_storage their_addr; - _set_sockaddr(&their_addr, p_host, p_port); + size_t addr_size = _set_sockaddr(&their_addr, p_host, p_port); errno = 0; - if (::connect(sockfd, (struct sockaddr *)&their_addr,sizeof(their_addr)) == -1 && errno != EINPROGRESS) { + if (::connect(sockfd, (struct sockaddr *)&their_addr,addr_size) == -1 && errno != EINPROGRESS) { ERR_PRINT("Connection to remote host failed!"); disconnect(); |
