Hello community,

here is the log from the commit of package rubygem-puma for openSUSE:Factory 
checked in at 2018-02-12 10:13:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-puma (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-puma.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-puma"

Mon Feb 12 10:13:45 2018 rev:29 rq:574056 version:3.11.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-puma/rubygem-puma.changes        
2017-12-22 12:18:23.367454185 +0100
+++ /work/SRC/openSUSE:Factory/.rubygem-puma.new/rubygem-puma.changes   
2018-02-12 10:13:49.704503267 +0100
@@ -1,0 +2,16 @@
+Thu Feb  8 06:21:17 UTC 2018 - co...@suse.com
+
+- updated to version 3.11.2
+ see installed History.md
+
+  ## 3.11.2 / 2018-01-19
+  
+  * 1 bugfix:
+    * Deal with read\_nonblock returning nil early
+  
+  ## 3.11.1 / 2018-01-18
+  
+  * 1 bugfix:
+    * Handle read\_nonblock returning nil when the socket close (#1502)
+
+-------------------------------------------------------------------

Old:
----
  puma-3.11.0.gem

New:
----
  puma-3.11.2.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-puma.spec ++++++
--- /var/tmp/diff_new_pack.juLBjH/_old  2018-02-12 10:13:50.608470691 +0100
+++ /var/tmp/diff_new_pack.juLBjH/_new  2018-02-12 10:13:50.612470547 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package rubygem-puma
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # 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-puma
-Version:        3.11.0
+Version:        3.11.2
 Release:        0
 %define mod_name puma
 %define mod_full_name %{mod_name}-%{version}

++++++ puma-3.11.0.gem -> puma-3.11.2.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/History.md new/History.md
--- old/History.md      2017-11-20 17:26:13.000000000 +0100
+++ new/History.md      2018-01-19 20:23:10.000000000 +0100
@@ -1,7 +1,17 @@
+## 3.11.2 / 2018-01-19
+
+* 1 bugfix:
+  * Deal with read\_nonblock returning nil early
+
+## 3.11.1 / 2018-01-18
+
+* 1 bugfix:
+  * Handle read\_nonblock returning nil when the socket close (#1502)
+
 ## 3.11.0 / 2017-11-20
 
 * 2 features:
-  * HTTP 203 Early Hints (#1403)
+  * HTTP 103 Early Hints (#1403)
   * 421/451 status codes now have correct status messages attached (#1435)
 
 * 9 bugfixes:
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/puma_http11/http11_parser.c 
new/ext/puma_http11/http11_parser.c
--- old/ext/puma_http11/http11_parser.c 2017-11-20 17:26:13.000000000 +0100
+++ new/ext/puma_http11/http11_parser.c 2018-01-19 20:23:10.000000000 +0100
@@ -41,11 +41,14 @@
 static const int puma_parser_first_final = 47;
 static const int puma_parser_error = 0;
 
+static const int puma_parser_en_main = 1;
+
+
 #line 83 "ext/puma_http11/http11_parser.rl"
 
 int puma_parser_init(puma_parser *parser)  {
   int cs = 0;
-
+  
 #line 53 "ext/puma_http11/http11_parser.c"
        {
        cs = puma_parser_start;
@@ -71,9 +74,15 @@
   const char *p, *pe;
   int cs = parser->cs;
 
+  assert(off <= len && "offset past end of buffer");
+
   p = buffer+off;
   pe = buffer+len;
 
+  /* assert(*pe == '\0' && "pointer does not end on NUL"); */
+  assert((size_t) (pe - p) == len - off && "pointers aren't same distance");
+
+  
 #line 87 "ext/puma_http11/http11_parser.c"
        {
        if ( p == pe )
@@ -973,52 +982,52 @@
                goto tr2;
        goto st0;
        }
-       _test_eof2: cs = 2; goto _test_eof;
-       _test_eof3: cs = 3; goto _test_eof;
-       _test_eof4: cs = 4; goto _test_eof;
-       _test_eof5: cs = 5; goto _test_eof;
-       _test_eof6: cs = 6; goto _test_eof;
-       _test_eof7: cs = 7; goto _test_eof;
-       _test_eof8: cs = 8; goto _test_eof;
-       _test_eof9: cs = 9; goto _test_eof;
-       _test_eof10: cs = 10; goto _test_eof;
-       _test_eof11: cs = 11; goto _test_eof;
-       _test_eof12: cs = 12; goto _test_eof;
-       _test_eof13: cs = 13; goto _test_eof;
-       _test_eof14: cs = 14; goto _test_eof;
-       _test_eof15: cs = 15; goto _test_eof;
-       _test_eof16: cs = 16; goto _test_eof;
-       _test_eof47: cs = 47; goto _test_eof;
-       _test_eof17: cs = 17; goto _test_eof;
-       _test_eof18: cs = 18; goto _test_eof;
-       _test_eof19: cs = 19; goto _test_eof;
-       _test_eof20: cs = 20; goto _test_eof;
-       _test_eof21: cs = 21; goto _test_eof;
-       _test_eof22: cs = 22; goto _test_eof;
-       _test_eof23: cs = 23; goto _test_eof;
-       _test_eof24: cs = 24; goto _test_eof;
-       _test_eof25: cs = 25; goto _test_eof;
-       _test_eof26: cs = 26; goto _test_eof;
-       _test_eof27: cs = 27; goto _test_eof;
-       _test_eof28: cs = 28; goto _test_eof;
-       _test_eof29: cs = 29; goto _test_eof;
-       _test_eof30: cs = 30; goto _test_eof;
-       _test_eof31: cs = 31; goto _test_eof;
-       _test_eof32: cs = 32; goto _test_eof;
-       _test_eof33: cs = 33; goto _test_eof;
-       _test_eof34: cs = 34; goto _test_eof;
-       _test_eof35: cs = 35; goto _test_eof;
-       _test_eof36: cs = 36; goto _test_eof;
-       _test_eof37: cs = 37; goto _test_eof;
-       _test_eof38: cs = 38; goto _test_eof;
-       _test_eof39: cs = 39; goto _test_eof;
-       _test_eof40: cs = 40; goto _test_eof;
-       _test_eof41: cs = 41; goto _test_eof;
-       _test_eof42: cs = 42; goto _test_eof;
-       _test_eof43: cs = 43; goto _test_eof;
-       _test_eof44: cs = 44; goto _test_eof;
-       _test_eof45: cs = 45; goto _test_eof;
-       _test_eof46: cs = 46; goto _test_eof;
+       _test_eof2: cs = 2; goto _test_eof; 
+       _test_eof3: cs = 3; goto _test_eof; 
+       _test_eof4: cs = 4; goto _test_eof; 
+       _test_eof5: cs = 5; goto _test_eof; 
+       _test_eof6: cs = 6; goto _test_eof; 
+       _test_eof7: cs = 7; goto _test_eof; 
+       _test_eof8: cs = 8; goto _test_eof; 
+       _test_eof9: cs = 9; goto _test_eof; 
+       _test_eof10: cs = 10; goto _test_eof; 
+       _test_eof11: cs = 11; goto _test_eof; 
+       _test_eof12: cs = 12; goto _test_eof; 
+       _test_eof13: cs = 13; goto _test_eof; 
+       _test_eof14: cs = 14; goto _test_eof; 
+       _test_eof15: cs = 15; goto _test_eof; 
+       _test_eof16: cs = 16; goto _test_eof; 
+       _test_eof47: cs = 47; goto _test_eof; 
+       _test_eof17: cs = 17; goto _test_eof; 
+       _test_eof18: cs = 18; goto _test_eof; 
+       _test_eof19: cs = 19; goto _test_eof; 
+       _test_eof20: cs = 20; goto _test_eof; 
+       _test_eof21: cs = 21; goto _test_eof; 
+       _test_eof22: cs = 22; goto _test_eof; 
+       _test_eof23: cs = 23; goto _test_eof; 
+       _test_eof24: cs = 24; goto _test_eof; 
+       _test_eof25: cs = 25; goto _test_eof; 
+       _test_eof26: cs = 26; goto _test_eof; 
+       _test_eof27: cs = 27; goto _test_eof; 
+       _test_eof28: cs = 28; goto _test_eof; 
+       _test_eof29: cs = 29; goto _test_eof; 
+       _test_eof30: cs = 30; goto _test_eof; 
+       _test_eof31: cs = 31; goto _test_eof; 
+       _test_eof32: cs = 32; goto _test_eof; 
+       _test_eof33: cs = 33; goto _test_eof; 
+       _test_eof34: cs = 34; goto _test_eof; 
+       _test_eof35: cs = 35; goto _test_eof; 
+       _test_eof36: cs = 36; goto _test_eof; 
+       _test_eof37: cs = 37; goto _test_eof; 
+       _test_eof38: cs = 38; goto _test_eof; 
+       _test_eof39: cs = 39; goto _test_eof; 
+       _test_eof40: cs = 40; goto _test_eof; 
+       _test_eof41: cs = 41; goto _test_eof; 
+       _test_eof42: cs = 42; goto _test_eof; 
+       _test_eof43: cs = 43; goto _test_eof; 
+       _test_eof44: cs = 44; goto _test_eof; 
+       _test_eof45: cs = 45; goto _test_eof; 
+       _test_eof46: cs = 46; goto _test_eof; 
 
        _test_eof: {}
        _out: {}
@@ -1030,6 +1039,13 @@
     parser->cs = cs;
   parser->nread += p - (buffer + off);
 
+  assert(p <= pe && "buffer overflow after parsing execute");
+  assert(parser->nread <= len && "nread longer than length");
+  assert(parser->body_start <= len && "body starts after buffer end");
+  assert(parser->mark < len && "mark is after buffer end");
+  assert(parser->field_len <= len && "field has length longer than whole 
buffer");
+  assert(parser->field_start < len && "field starts after buffer end");
+
   return(parser->nread);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/binder.rb new/lib/puma/binder.rb
--- old/lib/puma/binder.rb      2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/binder.rb      2018-01-19 20:23:10.000000000 +0100
@@ -120,7 +120,7 @@
 
             umask = nil
             mode = nil
-            backlog = nil
+            backlog = 1024
 
             if uri.query
               params = Util.parse_query uri.query
@@ -344,7 +344,7 @@
 
     # Tell the server to listen on +path+ as a UNIX domain socket.
     #
-    def add_unix_listener(path, umask=nil, mode=nil, backlog=nil)
+    def add_unix_listener(path, umask=nil, mode=nil, backlog=1024)
       @unix_paths << path
 
       # Let anyone connect by default
@@ -365,7 +365,7 @@
         end
 
         s = UNIXServer.new(path)
-        s.listen backlog if backlog
+        s.listen backlog
         @ios << s
       ensure
         File.umask old_mask
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/client.rb new/lib/puma/client.rb
--- old/lib/puma/client.rb      2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/client.rb      2018-01-19 20:23:10.000000000 +0100
@@ -284,6 +284,14 @@
         raise ConnectionError, "Connection error detected during read"
       end
 
+      # No data means a closed socket
+      unless data
+        @buffer = nil
+        @requests_served += 1
+        @ready = true
+        raise EOFError
+      end
+
       if @buffer
         @buffer << data
       else
@@ -313,6 +321,14 @@
           raise e
         end
 
+        # No data means a closed socket
+        unless data
+          @buffer = nil
+          @requests_served += 1
+          @ready = true
+          raise EOFError
+        end
+
         if @buffer
           @buffer << data
         else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/cluster.rb new/lib/puma/cluster.rb
--- old/lib/puma/cluster.rb     2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/cluster.rb     2018-01-19 20:23:10.000000000 +0100
@@ -279,8 +279,8 @@
         while true
           sleep WORKER_CHECK_INTERVAL
           begin
-            b = server.backlog
-            r = server.running
+            b = server.backlog || 0
+            r = server.running || 0
             payload = %Q!#{base_payload}{ "backlog":#{b}, "running":#{r} }\n!
             io << payload
           rescue IOError
@@ -340,7 +340,7 @@
     def stats
       old_worker_count = @workers.count { |w| w.phase != @phase }
       booted_worker_count = @workers.count { |w| w.booted? }
-      worker_status = '[' + @workers.map{ |w| %Q!{ "pid": #{w.pid}, "index": 
#{w.index}, "phase": #{w.phase}, "booted": #{w.booted?}, "last_checkin": 
"#{w.last_checkin.utc.iso8601}", "last_status": #{w.last_status} }!}.join(",") 
+ ']'
+      worker_status = '[' + @workers.map { |w| %Q!{ "pid": #{w.pid}, "index": 
#{w.index}, "phase": #{w.phase}, "booted": #{w.booted?}, "last_checkin": 
"#{w.last_checkin.utc.iso8601}", "last_status": #{w.last_status} }!}.join(",") 
+ ']'
       %Q!{ "workers": #{@workers.size}, "phase": #{@phase}, "booted_workers": 
#{booted_worker_count}, "old_workers": #{old_worker_count}, "worker_status": 
#{worker_status} }!
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/configuration.rb 
new/lib/puma/configuration.rb
--- old/lib/puma/configuration.rb       2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/configuration.rb       2018-01-19 20:23:10.000000000 +0100
@@ -180,7 +180,7 @@
         :worker_shutdown_timeout => DefaultWorkerShutdownTimeout,
         :remote_address => :socket,
         :tag => method(:infer_tag),
-        :environment => ->{ ENV['RACK_ENV'] || "development" },
+        :environment => -> { ENV['RACK_ENV'] || "development" },
         :rackup => DefaultRackup,
         :logger => STDOUT,
         :persistent_timeout => Const::PERSISTENT_TIMEOUT,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/const.rb new/lib/puma/const.rb
--- old/lib/puma/const.rb       2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/const.rb       2018-01-19 20:23:10.000000000 +0100
@@ -98,7 +98,7 @@
   # too taxing on performance.
   module Const
 
-    PUMA_VERSION = VERSION = "3.11.0".freeze
+    PUMA_VERSION = VERSION = "3.11.2".freeze
     CODE_NAME = "Love Song".freeze
     PUMA_SERVER_STRING = ['puma', PUMA_VERSION, CODE_NAME].join(' ').freeze
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/dsl.rb new/lib/puma/dsl.rb
--- old/lib/puma/dsl.rb 2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/dsl.rb 2018-01-19 20:23:10.000000000 +0100
@@ -110,9 +110,22 @@
       @options[:config_files] << file
     end
 
-    # Bind the server to +url+. tcp:// and unix:// are the only accepted
-    # protocols.
+    # Adds a binding for the server to +url+. tcp://, unix://, and ssl:// are 
the only accepted
+    # protocols. Use query parameters within the url to specify options.
     #
+    # @note multiple urls can be bound to, calling `bind` does not overwrite 
previous bindings.
+    #
+    # @example Explicitly the socket backlog depth (default is 1024)
+    #   bind('unix:///var/run/puma.sock?backlog=2048')
+    #
+    # @example Set up ssl cert
+    #   bind('ssl://127.0.0.1:9292?key=key.key&cert=cert.pem')
+    #
+    # @example Prefer low-latency over higher throughput (via 
`Socket::TCP_NODELAY`)
+    #   bind('tcp://0.0.0.0:9292?low_latency=true')
+    #
+    # @example Set socket permissions
+    #   bind('unix:///var/run/puma.sock?umask=0111')
     def bind(url)
       @options[:binds] ||= []
       @options[:binds] << url
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/minissl.rb new/lib/puma/minissl.rb
--- old/lib/puma/minissl.rb     2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/minissl.rb     2018-01-19 20:23:10.000000000 +0100
@@ -58,6 +58,8 @@
               else
                 IO.select(nil, [@socket.to_io])
               end
+            elsif !data
+              return nil
             else
               break
             end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/single.rb new/lib/puma/single.rb
--- old/lib/puma/single.rb      2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/single.rb      2018-01-19 20:23:10.000000000 +0100
@@ -5,8 +5,8 @@
 module Puma
   class Single < Runner
     def stats
-      b = @server.backlog
-      r = @server.running
+      b = @server.backlog || 0
+      r = @server.running || 0
       %Q!{ "backlog": #{b}, "running": #{r} }!
     end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/puma/thread_pool.rb new/lib/puma/thread_pool.rb
--- old/lib/puma/thread_pool.rb 2017-11-20 17:26:13.000000000 +0100
+++ new/lib/puma/thread_pool.rb 2018-01-19 20:23:10.000000000 +0100
@@ -53,7 +53,7 @@
     attr_accessor :clean_thread_locals
 
     def self.clean_thread_locals
-      Thread.current.keys.each do |key|
+      Thread.current.keys.each do |key| # rubocop: disable 
Performance/HashEachMethods
         Thread.current[key] = nil unless key == :__recursive_key__
       end
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rack/handler/puma.rb new/lib/rack/handler/puma.rb
--- old/lib/rack/handler/puma.rb        2017-11-20 17:26:13.000000000 +0100
+++ new/lib/rack/handler/puma.rb        2018-01-19 20:23:10.000000000 +0100
@@ -21,7 +21,7 @@
         # contains an array of all explicitly defined user options. We then
         # know that all other values are defaults
         if user_supplied_options = options.delete(:user_supplied_options)
-          (options.keys - user_supplied_options).each do |k, v|
+          (options.keys - user_supplied_options).each do |k|
             default_options[k] = options.delete(k)
           end
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2017-11-20 17:26:13.000000000 +0100
+++ new/metadata        2018-01-19 20:23:10.000000000 +0100
@@ -1,14 +1,14 @@
 --- !ruby/object:Gem::Specification
 name: puma
 version: !ruby/object:Gem::Version
-  version: 3.11.0
+  version: 3.11.2
 platform: ruby
 authors:
 - Evan Phoenix
 autorequire: 
 bindir: bin
 cert_chain: []
-date: 2017-11-20 00:00:00.000000000 Z
+date: 2018-01-19 00:00:00.000000000 Z
 dependencies: []
 description: Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 
server
   for Ruby/Rack applications. Puma is intended for use in both development and 
production
@@ -121,7 +121,7 @@
       version: '0'
 requirements: []
 rubyforge_project: 
-rubygems_version: 2.6.13
+rubygems_version: 2.6.8
 signing_key: 
 specification_version: 4
 summary: Puma is a simple, fast, threaded, and highly concurrent HTTP 1.1 
server for


Reply via email to