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