From 4ce6b00f75f1584aff088f6b4e6b15488331e582 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 10 Mar 2017 20:34:31 +0000 Subject: test_exec: SO_KEEPALIVE value only needs to be true On FreeBSD 10.3, the value of SO_KEEPALIVE returned by getsockopt is 8, even when set to '1' via setsockopt. Relax the test to only ensure the boolean value is interpreted as "true". Verified independently of Ruby using the following: --------8<--------- #include #include #include static int err(const char *msg) { perror(msg); return 1; } int main(void) { int sv[2]; int set = 1; int got; socklen_t len = (socklen_t)sizeof(int); int rc; rc = socketpair(PF_LOCAL, SOCK_STREAM, 0, sv); if (rc) return err("socketpair failed"); rc = setsockopt(sv[0], SOL_SOCKET, SO_KEEPALIVE, &set, len); if (rc) return err("setsockopt failed"); rc = getsockopt(sv[0], SOL_SOCKET, SO_KEEPALIVE, &got, &len); if (rc) return err("getsockopt failed"); printf("got: %d\n", got); return 0; } --- test/exec/test_exec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/exec/test_exec.rb b/test/exec/test_exec.rb index 4941c4e..08f92ae 100644 --- a/test/exec/test_exec.rb +++ b/test/exec/test_exec.rb @@ -143,7 +143,7 @@ run lambda { |env| res = hit(["http://#@addr:#@port/"]) assert_equal [ "HI\n" ], res assert_shutdown(pid) - assert_equal 1, sock.getsockopt(:SOL_SOCKET, :SO_KEEPALIVE).int, + assert sock.getsockopt(:SOL_SOCKET, :SO_KEEPALIVE).bool, 'unicorn should always set SO_KEEPALIVE on inherited sockets' ensure sock.close if sock -- cgit v1.2.3-24-ge0c7