about summary refs log tree commit homepage
path: root/test
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-06-07 13:54:18 -0700
committerEric Wong <normalperson@yhbt.net>2011-06-07 14:01:09 -0700
commitc3880bb0cc00821d1715a7dd94b0b76a03a7ace0 (patch)
treedee85ce7f218d0ce4e0232dc9f845f51c59a62ef /test
parent0dc56fd03ea478ae054e3d0398703f43e017723b (diff)
downloadunicorn-c3880bb0cc00821d1715a7dd94b0b76a03a7ace0.tar.gz
Enabling this flag for an IPv6 TCP listener allows users to
specify IPv6-only listeners regardless of the OS default.
This should be interest to Rainbows! users.
Diffstat (limited to 'test')
-rw-r--r--test/unit/test_socket_helper.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/unit/test_socket_helper.rb b/test/unit/test_socket_helper.rb
index c6d0d42..8ce1023 100644
--- a/test/unit/test_socket_helper.rb
+++ b/test/unit/test_socket_helper.rb
@@ -12,6 +12,7 @@ class TestSocketHelper < Test::Unit::TestCase
     @log_tmp = Tempfile.new 'logger'
     @logger = Logger.new(@log_tmp.path)
     @test_addr = ENV['UNICORN_TEST_ADDR'] || '127.0.0.1'
+    @test6_addr = ENV['UNICORN_TEST6_ADDR'] || '::1'
     GC.disable
   end
 
@@ -177,4 +178,11 @@ class TestSocketHelper < Test::Unit::TestCase
     assert cur > 1
   end if defined?(TCP_DEFER_ACCEPT)
 
+  def test_ipv6only
+    port = unused_port "#@test6_addr"
+    sock = bind_listen "[#@test6_addr]:#{port}", :ipv6only => true
+    cur = sock.getsockopt(:IPPROTO_IPV6, :IPV6_V6ONLY).unpack('i')[0]
+    assert_equal 1, cur
+    rescue Errno::EAFNOSUPPORT
+  end if RUBY_VERSION >= "1.9.2"
 end