File 0004-Fix-cpu-usage.patch of Package rubygem-puma.17574

From 8de43e46536d92448d590e5f4a270029ec6a1849 Mon Sep 17 00:00:00 2001
From: dmaiocchi <dmaiocchi@suse.com>
Date: Tue, 8 Dec 2020 10:52:25 +0100
Subject: [PATCH] Fix ssl_v3_rejection test hanging

and fic HIGH cpu usage
---
 lib/puma/minissl.rb | 4 ++--
 lib/puma/server.rb  | 5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/puma/minissl.rb b/lib/puma/minissl.rb
index a65c1c64..e3e46de5 100644
--- a/lib/puma/minissl.rb
+++ b/lib/puma/minissl.rb
@@ -124,7 +124,7 @@ module Puma
 
       def read_and_drop(timeout = 1)
         return :timeout unless IO.select([@socket], nil, nil, timeout)
-        read_nonblock(1024)
+        return :eof unless read_nonblock(1024)
         :drop
       rescue Errno::EAGAIN
         # do nothing
@@ -141,7 +141,7 @@ module Puma
           # Don't let this socket hold this loop forever.
           # If it can't send more packets within 1s, then give up.
           while should_drop_bytes?
-            return if read_and_drop(1) == :timeout
+            return if [:timeout, :eof].include?(read_and_drop(1))
           end
         rescue IOError, SystemCallError
           Thread.current.purge_interrupt_queue if Thread.current.respond_to? :purge_interrupt_queue
diff --git a/lib/puma/server.rb b/lib/puma/server.rb
index fe5eb070..04536e5f 100644
--- a/lib/puma/server.rb
+++ b/lib/puma/server.rb
@@ -241,6 +241,11 @@ module Puma
         STDERR.puts "Exception handling servers: #{e.message} (#{e.class})"
         STDERR.puts e.backtrace
       ensure
+	begin
+          @check.close
+        rescue
+          Thread.current.purge_interrupt_queue if Thread.current.respond_to? :purge_interrupt_queue
+        end
         @check.close
         @notify.close
 
-- 
2.26.2

openSUSE Build Service is sponsored by