unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help
 help / Atom feed
* [PATCH] test_exec: SO_KEEPALIVE value only needs to be true
@ 2017-03-10 20:34 Eric Wong
  0 siblings, 0 replies; 1+ messages in thread
From: Eric Wong @ 2017-03-10 20:34 UTC (permalink / raw)
  To: unicorn-public; +Cc: Eric Wong

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 <sys/types.h>
    #include <sys/socket.h>
    #include <stdio.h>

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 ca0b7bc..37ba90f 100644
--- a/test/exec/test_exec.rb
+++ b/test/exec/test_exec.rb
@@ -142,7 +142,7 @@ def test_inherit_listener_unspecified
     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
-- 
EW


^ permalink raw reply	[flat|nested] 1+ messages in thread

only message in thread, back to index

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-10 20:34 [PATCH] test_exec: SO_KEEPALIVE value only needs to be true Eric Wong

unicorn Ruby/Rack server user+dev discussion/patches/pulls/bugs/help

Archives are clonable:
	git clone --mirror https://bogomips.org/unicorn-public
	git clone --mirror http://ou63pmih66umazou.onion/unicorn-public

Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
	nntp://ou63pmih66umazou.onion/inbox.comp.lang.ruby.unicorn

 note: .onion URLs require Tor: https://www.torproject.org/
       or Tor2web: https://www.tor2web.org/

AGPL code for this site: git clone https://public-inbox.org/ public-inbox