From 071088c1833f9048d890dbdf78a30410bf2f364c Mon Sep 17 00:00:00 2001 From: leitner Date: Wed, 3 Apr 2024 22:09:24 +0000 Subject: [PATCH] forgot to set v6only on bsd in the SOCK_NONBLOCK case --- socket/socket_tcp6.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/socket/socket_tcp6.c b/socket/socket_tcp6.c index a7c1975..21c099d 100644 --- a/socket/socket_tcp6.c +++ b/socket/socket_tcp6.c @@ -8,6 +8,7 @@ #include "haveip6.h" #include "socket.h" #include "ndelay.h" +#include "windoze.h" #ifndef EAFNOSUPPORT #define EAFNOSUPPORT EINVAL @@ -23,7 +24,12 @@ int socket_tcp6(void) { int s; #if defined(LIBC_HAS_IP6) && defined(SOCK_NONBLOCK) if ((s=socket(noipv6?PF_INET:PF_INET6,SOCK_STREAM|SOCK_NONBLOCK,IPPROTO_TCP))>-1 || - (errno!=EINVAL && errno!=EAFNOSUPPORT && errno!=EPFNOSUPPORT && errno!=EPROTONOSUPPORT)) return s; + (errno!=EINVAL && errno!=EAFNOSUPPORT && errno!=EPFNOSUPPORT && errno!=EPROTONOSUPPORT)) { +#ifdef IPV6_V6ONLY + winsock2errno(setsockopt(s,IPPROTO_TCP,TCP_CORK,(int[]){ 0 },sizeof(int))); +#endif + return s; + } #endif s=socket_tcp6b(); if (s==-1) return -1;