Add fix to libwebsocket to disable V6ONLY.
This was enabled by default on some systems (e.g. Windows).
This commit is contained in:
parent
90210c4862
commit
e3ddf12693
4 changed files with 44 additions and 0 deletions
2
thirdparty/README.md
vendored
2
thirdparty/README.md
vendored
|
@ -272,6 +272,8 @@ File extracted from upstream source:
|
||||||
- Also copy `win32helpers/` from `win32port/` inside `thirdparty/libwebsockets`
|
- Also copy `win32helpers/` from `win32port/` inside `thirdparty/libwebsockets`
|
||||||
- A fix has been added to allow building for 32-bits UWP, replacing `GetFileSize[Ex]` and `CreateFileW` with supported functions.
|
- A fix has been added to allow building for 32-bits UWP, replacing `GetFileSize[Ex]` and `CreateFileW` with supported functions.
|
||||||
There is a diff for this change in `thirdparty/libwebsockets/uwp_fixes.diff`
|
There is a diff for this change in `thirdparty/libwebsockets/uwp_fixes.diff`
|
||||||
|
- A fix to disable V6ONLY flag from IPv6 sockets (on by default on some systems) has been also applied.
|
||||||
|
The diff for this change can be found in `thirdparty/libwebsockets/ipv6_fixes.diff`
|
||||||
|
|
||||||
Important: `lws_config.h` and `lws_config_private.h` contains custom
|
Important: `lws_config.h` and `lws_config_private.h` contains custom
|
||||||
Godot build configurations, check them out when updating.
|
Godot build configurations, check them out when updating.
|
||||||
|
|
32
thirdparty/libwebsockets/ipv6_fixes.diff
vendored
Normal file
32
thirdparty/libwebsockets/ipv6_fixes.diff
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
diff --git a/thirdparty/libwebsockets/lib/plat/unix/unix-sockets.c b/thirdparty/libwebsockets/lib/plat/unix/unix-sockets.c
|
||||||
|
index 693efd28e..192dddee6 100644
|
||||||
|
--- a/thirdparty/libwebsockets/lib/plat/unix/unix-sockets.c
|
||||||
|
+++ b/thirdparty/libwebsockets/lib/plat/unix/unix-sockets.c
|
||||||
|
@@ -73,6 +73,11 @@ lws_plat_set_socket_options(struct lws_vhost *vhost, int fd, int unix_skt)
|
||||||
|
int optval = 1;
|
||||||
|
socklen_t optlen = sizeof(optval);
|
||||||
|
|
||||||
|
+#ifdef LWS_WITH_IPV6
|
||||||
|
+ optval = 0;
|
||||||
|
+ setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const void*)&optval, optlen);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#if defined(__APPLE__) || \
|
||||||
|
defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
|
||||||
|
defined(__NetBSD__) || \
|
||||||
|
diff --git a/thirdparty/libwebsockets/lib/plat/windows/windows-sockets.c b/thirdparty/libwebsockets/lib/plat/windows/windows-sockets.c
|
||||||
|
index bf0935057..62a0a4984 100644
|
||||||
|
--- a/thirdparty/libwebsockets/lib/plat/windows/windows-sockets.c
|
||||||
|
+++ b/thirdparty/libwebsockets/lib/plat/windows/windows-sockets.c
|
||||||
|
@@ -56,6 +56,11 @@ lws_plat_set_socket_options(struct lws_vhost *vhost, lws_sockfd_type fd,
|
||||||
|
struct protoent *tcp_proto;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifdef LWS_WITH_IPV6
|
||||||
|
+ optval = 0;
|
||||||
|
+ setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const void*)&optval, optlen);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
if (vhost->ka_time) {
|
||||||
|
/* enable keepalive on this socket */
|
||||||
|
optval = 1;
|
|
@ -73,6 +73,11 @@ lws_plat_set_socket_options(struct lws_vhost *vhost, int fd, int unix_skt)
|
||||||
int optval = 1;
|
int optval = 1;
|
||||||
socklen_t optlen = sizeof(optval);
|
socklen_t optlen = sizeof(optval);
|
||||||
|
|
||||||
|
#ifdef LWS_WITH_IPV6
|
||||||
|
optval = 0;
|
||||||
|
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const void*)&optval, optlen);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__APPLE__) || \
|
#if defined(__APPLE__) || \
|
||||||
defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
|
defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \
|
||||||
defined(__NetBSD__) || \
|
defined(__NetBSD__) || \
|
||||||
|
|
|
@ -56,6 +56,11 @@ lws_plat_set_socket_options(struct lws_vhost *vhost, lws_sockfd_type fd,
|
||||||
struct protoent *tcp_proto;
|
struct protoent *tcp_proto;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef LWS_WITH_IPV6
|
||||||
|
optval = 0;
|
||||||
|
setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const void*)&optval, optlen);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (vhost->ka_time) {
|
if (vhost->ka_time) {
|
||||||
/* enable keepalive on this socket */
|
/* enable keepalive on this socket */
|
||||||
optval = 1;
|
optval = 1;
|
||||||
|
|
Loading…
Reference in a new issue