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?


Reply via email to