From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS49981 109.236.80.0/20 X-Spam-Status: No, score=-1.2 required=3.0 tests=BAYES_00,RCVD_IN_XBL, RDNS_NONE,SPF_FAIL,SPF_HELO_FAIL,TO_EQ_FM_DIRECT_MX,TO_EQ_FM_DOM_SPF_FAIL, TO_EQ_FM_SPF_FAIL shortcircuit=no autolearn=no autolearn_force=no version=3.4.0 Received: from 80x24.org (unknown [109.236.90.209]) by dcvr.yhbt.net (Postfix) with ESMTP id 77D5C1FAFB for ; Mon, 3 Apr 2017 19:59:33 +0000 (UTC) From: Eric Wong To: yahns-public@yhbt.net Subject: [PATCH] test_bin: SO_KEEPALIVE value only needs to be true Date: Mon, 3 Apr 2017 19:59:31 +0000 Message-Id: <20170403195931.24452-1-yahns-public@yhbt.net> List-Id: From: Eric Wong On FreeBSD 10.3 (and presumably other *BSD TCP stacks, 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/test_bin.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_bin.rb b/test/test_bin.rb index be1c024..af990ad 100644 --- a/test/test_bin.rb +++ b/test/test_bin.rb @@ -35,7 +35,7 @@ def test_listen_fd3 assert_equal "keep-alive", res["Connection"] end - assert_equal 1, @srv.getsockopt(:SOL_SOCKET, :SO_KEEPALIVE).int, + assert @srv.getsockopt(:SOL_SOCKET, :SO_KEEPALIVE).bool, 'ensure the inheriting process applies TCP socket options' ensure if pid -- EW