[master] ab05eda Test getsockopt, not just setsockopt in configure.ac

Tollef Fog Heen tfheen at varnish-cache.org
Tue Mar 8 10:35:56 CET 2011


commit ab05edab53ce7d40185db8c7d9153cd92e9f50ef
Author: Tollef Fog Heen <tfheen at varnish-software.com>
Date:   Tue Mar 8 10:34:12 2011 +0100

    Test getsockopt, not just setsockopt in configure.ac
    
    Fixes: #853

diff --git a/configure.ac b/configure.ac
index d7f5b94..19b194c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -351,7 +351,13 @@ AC_CACHE_CHECK([whether SO_RCVTIMEO works],
     ]],[[
 int sd = socket(AF_INET, SOCK_STREAM, 0);
 struct timeval tv = { 1, 0 };
-return !!setsockopt(sd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv);
+if (setsockopt(sd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof tv) == 0) {
+    socklen_t l = sizeof tv;
+    if (getsockopt(sd, SOL_SOCKET, SO_RCVTIMEO, &tv_get, &l) == 0) {
+        return (l == sizeof tv);
+    }
+}
+return 1;
     ]])],
     [ac_cv_so_rcvtimeo_works=yes],
     [ac_cv_so_rcvtimeo_works=no])
@@ -370,7 +376,13 @@ AC_CACHE_CHECK([whether SO_SNDTIMEO works],
     ]],[[
 int sd = socket(AF_INET, SOCK_STREAM, 0);
 struct timeval tv = { 1, 0 };
-return !!setsockopt(sd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof tv);
+if (setsockopt(sd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof tv) == 0) {
+    socklen_t l = sizeof tv;
+    if (getsockopt(sd, SOL_SOCKET, SO_SNDTIMEO, &tv_get, &l) == 0) {
+        return (l == sizeof tv);
+    }
+}
+return 1;
     ]])],
     [ac_cv_so_sndtimeo_works=yes],
     [ac_cv_so_sndtimeo_works=no])



More information about the varnish-commit mailing list