[master] a96bfb0 Also try with ipv6 if ipv4 is not available
Federico G. Schwindt
fgsch at lodoss.net
Sun Jan 15 14:11:05 CET 2017
commit a96bfb0ac9a94e4bca659fd0e8cf44a588f77cc6
Author: Federico G. Schwindt <fgsch at lodoss.net>
Date: Sun Jan 15 13:05:41 2017 +0000
Also try with ipv6 if ipv4 is not available
diff --git a/configure.ac b/configure.ac
index 02a9f7f..10baf91 100644
--- a/configure.ac
+++ b/configure.ac
@@ -384,14 +384,17 @@ AC_CACHE_CHECK([whether SO_RCVTIMEO works],
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
+#include <errno.h>
]],[[
-int sd = socket(AF_INET, SOCK_STREAM, 0);
+int s = socket(AF_INET, SOCK_STREAM, 0);
struct timeval tv = { 1, 0 };
-if (setsockopt(sd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv) == 0) {
- socklen_t l = sizeof tv;
- if (getsockopt(sd, SOL_SOCKET, SO_RCVTIMEO, &tv, &l) == 0) {
- return (l != sizeof tv);
- }
+if (s < 0 && errno == EPROTONOSUPPORT)
+ s = socket(AF_INET6, SOCK_STREAM, 0);
+if (setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv) == 0) {
+ socklen_t l = sizeof tv;
+ if (getsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &tv, &l) == 0) {
+ return (l != sizeof tv);
+ }
}
return 1;
]])],
@@ -412,14 +415,17 @@ AC_CACHE_CHECK([whether SO_SNDTIMEO works],
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
+#include <errno.h>
]],[[
-int sd = socket(AF_INET, SOCK_STREAM, 0);
+int s = socket(AF_INET, SOCK_STREAM, 0);
struct timeval tv = { 1, 0 };
-if (setsockopt(sd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof tv) == 0) {
- socklen_t l = sizeof tv;
- if (getsockopt(sd, SOL_SOCKET, SO_SNDTIMEO, &tv, &l) == 0) {
- return (l != sizeof tv);
- }
+if (s < 0 && errno == EPROTONOSUPPORT)
+ s = socket(AF_INET6, SOCK_STREAM, 0);
+if (setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof tv) == 0) {
+ socklen_t l = sizeof tv;
+ if (getsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &tv, &l) == 0) {
+ return (l != sizeof tv);
+ }
}
return 1;
]])],
@@ -443,15 +449,16 @@ AC_CACHE_CHECK([for TCP_KEEP(CNT|IDLE|INTVL) socket options],
[ac_cv_have_tcp_keep],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
-#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
+#include <errno.h>
]],[[
int s = socket(AF_INET, SOCK_STREAM, 0);
-int i;
-i = 5;
+int i = 5;
+if (s < 0 && errno == EPROTONOSUPPORT)
+ s = socket(AF_INET6, SOCK_STREAM, 0);
if (setsockopt(s, IPPROTO_TCP, TCP_KEEPCNT, &i, sizeof i))
return (1);
if (setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, &i, sizeof i))
@@ -475,15 +482,16 @@ AC_CACHE_CHECK([for TCP_FASTOPEN socket option],
[ac_cv_have_tcp_fastopen],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[
-#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
+#include <errno.h>
]],[[
int s = socket(AF_INET, SOCK_STREAM, 0);
-int i;
-i = 5;
+int i = 5;
+if (s < 0 && errno == EPROTONOSUPPORT)
+ s = socket(AF_INET6, SOCK_STREAM, 0);
if (setsockopt(s, SOL_TCP, TCP_FASTOPEN, &i, sizeof i))
return (1);
return (0);
More information about the varnish-commit
mailing list