Hello community, here is the log from the commit of package rubygem-serverengine for openSUSE:Factory checked in at 2020-03-07 21:39:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-serverengine (Old) and /work/SRC/openSUSE:Factory/.rubygem-serverengine.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-serverengine" Sat Mar 7 21:39:55 2020 rev:7 rq:773848 version:2.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-serverengine/rubygem-serverengine.changes 2019-06-19 21:01:09.654126420 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-serverengine.new.26092/rubygem-serverengine.changes 2020-03-07 21:39:58.676342617 +0100 @@ -1,0 +2,15 @@ +Mon Feb 10 15:47:25 UTC 2020 - Stephan Kulow <co...@suse.com> + +- updated to version 2.2.1 + see installed Changelog + + 2020-01-24 version 2.2.1: + + * Fix IPv6 dual-stack mode issue for UDP + * experimental: Add SERVERENGINE_USE_SOCKET_REUSEPORT envvar to enable SO_REUSEPORT + + 2019-11-16 version 2.2.0: + + * Fix IPv6 dual-stack mode issue for TCP + +------------------------------------------------------------------- Old: ---- serverengine-2.1.1.gem New: ---- serverengine-2.2.1.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-serverengine.spec ++++++ --- /var/tmp/diff_new_pack.aigVmK/_old 2020-03-07 21:39:59.192342965 +0100 +++ /var/tmp/diff_new_pack.aigVmK/_new 2020-03-07 21:39:59.192342965 +0100 @@ -1,7 +1,7 @@ # # spec file for package rubygem-serverengine # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2020 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-serverengine -Version: 2.1.1 +Version: 2.2.1 Release: 0 %define mod_name serverengine %define mod_full_name %{mod_name}-%{version} @@ -32,7 +32,7 @@ BuildRequires: %{ruby >= 2.1.0} BuildRequires: %{rubygem gem2rpm} BuildRequires: ruby-macros >= 5 -Url: https://github.com/fluent/serverengine +URL: https://github.com/fluent/serverengine Source: https://rubygems.org/gems/%{mod_full_name}.gem Source1: gem2rpm.yml Summary: ServerEngine - multiprocess server framework ++++++ serverengine-2.1.1.gem -> serverengine-2.2.1.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Changelog new/Changelog --- old/Changelog 2019-04-23 08:40:45.000000000 +0200 +++ new/Changelog 2020-01-24 07:55:38.000000000 +0100 @@ -1,3 +1,12 @@ +2020-01-24 version 2.2.1: + +* Fix IPv6 dual-stack mode issue for UDP +* experimental: Add SERVERENGINE_USE_SOCKET_REUSEPORT envvar to enable SO_REUSEPORT + +2019-11-16 version 2.2.0: + +* Fix IPv6 dual-stack mode issue for TCP + 2019-04-22 version 2.1.1: * Fix bug to ignore SIGDUMP_SIGNAL Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/serverengine/signal_thread.rb new/lib/serverengine/signal_thread.rb --- old/lib/serverengine/signal_thread.rb 2019-04-23 08:40:45.000000000 +0200 +++ new/lib/serverengine/signal_thread.rb 2020-01-24 07:55:38.000000000 +0100 @@ -67,7 +67,7 @@ def signal_handler_main(sig) # here always creates new thread to avoid - # complicated race conditin in signal handlers + # complicated race condition in signal handlers Thread.new do begin enqueue(sig) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/serverengine/socket_manager_unix.rb new/lib/serverengine/socket_manager_unix.rb --- old/lib/serverengine/socket_manager_unix.rb 2019-04-23 08:40:45.000000000 +0200 +++ new/lib/serverengine/socket_manager_unix.rb 2020-01-24 07:55:38.000000000 +0100 @@ -50,19 +50,30 @@ private def listen_tcp_new(bind_ip, port) - sock = TCPServer.new(bind_ip.to_s, port) - sock.listen(Socket::SOMAXCONN) # TODO make backlog configurable if necessary - return sock + if ENV['SERVERENGINE_USE_SOCKET_REUSEPORT'] == '1' + # Based on Addrinfo#listen + tsock = Socket.new(bind_ip.ipv6? ? ::Socket::AF_INET6 : ::Socket::AF_INET, ::Socket::SOCK_STREAM, 0) + tsock.ipv6only! if bind_ip.ipv6? + tsock.setsockopt(:SOCKET, :REUSEPORT, true) + tsock.setsockopt(:SOCKET, :REUSEADDR, true) + tsock.bind(Addrinfo.tcp(bind_ip.to_s, port)) + tsock.listen(::Socket::SOMAXCONN) + tsock.autoclose = false + TCPServer.for_fd(tsock.fileno) + else + # TCPServer.new doesn't set IPV6_V6ONLY flag, so use Addrinfo class instead. + # TODO: make backlog configurable if necessary + tsock = Addrinfo.tcp(bind_ip.to_s, port).listen(::Socket::SOMAXCONN) + tsock.autoclose = false + TCPServer.for_fd(tsock.fileno) + end end def listen_udp_new(bind_ip, port) - if bind_ip.ipv6? - sock = UDPSocket.new(Socket::AF_INET6) - else - sock = UDPSocket.new(Socket::AF_INET) - end - sock.bind(bind_ip.to_s, port) - return sock + # UDPSocket.new doesn't set IPV6_V6ONLY flag, so use Addrinfo class instead. + usock = Addrinfo.udp(bind_ip.to_s, port).bind + usock.autoclose = false + UDPSocket.for_fd(usock.fileno) end def start_server(path) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/serverengine/version.rb new/lib/serverengine/version.rb --- old/lib/serverengine/version.rb 2019-04-23 08:40:45.000000000 +0200 +++ new/lib/serverengine/version.rb 2020-01-24 07:55:38.000000000 +0100 @@ -1,3 +1,3 @@ module ServerEngine - VERSION = "2.1.1" + VERSION = "2.2.1" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2019-04-23 08:40:45.000000000 +0200 +++ new/metadata 2020-01-24 07:55:38.000000000 +0100 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: serverengine version: !ruby/object:Gem::Version - version: 2.1.1 + version: 2.2.1 platform: ruby authors: - Sadayuki Furuhashi autorequire: bindir: bin cert_chain: [] -date: 2019-04-23 00:00:00.000000000 Z +date: 2020-01-24 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: sigdump @@ -153,8 +153,7 @@ - !ruby/object:Gem::Version version: '0' requirements: [] -rubyforge_project: -rubygems_version: 2.6.14.1 +rubygems_version: 3.0.3 signing_key: specification_version: 4 summary: ServerEngine - multiprocess server framework diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/socket_manager_spec.rb new/spec/socket_manager_spec.rb --- old/spec/socket_manager_spec.rb 2019-04-23 08:40:45.000000000 +0200 +++ new/spec/socket_manager_spec.rb 2020-01-24 07:55:38.000000000 +0100 @@ -155,7 +155,27 @@ test_state(:is_udp_socket).should == 1 test_state(:udp_data_sent).should == 1 end - end if (TCPServer.open("::1",0) rescue nil) + end if (TCPServer.open("::1", 0) rescue nil) + + unless ServerEngine.windows? + context 'using ipv4/ipv6' do + it 'can bind ipv4/ipv6 together' do + server = SocketManager::Server.open(server_path) + client = ServerEngine::SocketManager::Client.new(server_path) + + tcp_v4 = client.listen_tcp('0.0.0.0', test_port) + udp_v4 = client.listen_udp('0.0.0.0', test_port) + tcp_v6 = client.listen_tcp('::', test_port) + udp_v6 = client.listen_udp('::', test_port) + + tcp_v4.close + udp_v4.close + tcp_v6.close + udp_v6.close + server.close + end + end if (TCPServer.open("::", 0) rescue nil) + end end if ServerEngine.windows?