diff options
author | Andrew Konchin <[email protected]> | 2025-02-07 15:13:00 +0200 |
---|---|---|
committer | Benoit Daloze <[email protected]> | 2025-02-07 21:13:14 +0100 |
commit | 5454188f6bcb333f8aa7a80986736694e1bfc26c (patch) | |
tree | e970441a6dd98904c68ffbd31c9c6a0997c77573 /spec/ruby/library/socket/basicsocket | |
parent | 7178593558080ca529abb61ef27038236ab2687d (diff) |
Retry on IO::EAGAINWaitReadable when a closed socket is still not available for reading
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/12710
Diffstat (limited to 'spec/ruby/library/socket/basicsocket')
-rw-r--r-- | spec/ruby/library/socket/basicsocket/recv_nonblock_spec.rb | 14 | ||||
-rw-r--r-- | spec/ruby/library/socket/basicsocket/recvmsg_nonblock_spec.rb | 14 |
2 files changed, 20 insertions, 8 deletions
diff --git a/spec/ruby/library/socket/basicsocket/recv_nonblock_spec.rb b/spec/ruby/library/socket/basicsocket/recv_nonblock_spec.rb index 5bdbbfe688..f2a6682f12 100644 --- a/spec/ruby/library/socket/basicsocket/recv_nonblock_spec.rb +++ b/spec/ruby/library/socket/basicsocket/recv_nonblock_spec.rb @@ -113,7 +113,6 @@ describe "Socket::BasicSocket#recv_nonblock" do end ruby_version_is ""..."3.3" do - quarantine! do # May fail with "IO::EAGAINWaitReadable: Resource temporarily unavailable - recvfrom(2) would block" error it "returns an empty String on a closed stream socket" do ready = false @@ -121,7 +120,11 @@ describe "Socket::BasicSocket#recv_nonblock" do client = @server.accept Thread.pass while !ready - client.recv_nonblock(10) + begin + client.recv_nonblock(10) + rescue IO::EAGAINWaitReadable + retry + end ensure client.close if client end @@ -135,7 +138,6 @@ describe "Socket::BasicSocket#recv_nonblock" do t.value.should == "" end - end end ruby_version_is "3.3" do @@ -146,7 +148,11 @@ describe "Socket::BasicSocket#recv_nonblock" do client = @server.accept Thread.pass while !ready - client.recv_nonblock(10) + begin + client.recv_nonblock(10) + rescue IO::EAGAINWaitReadable + retry + end ensure client.close if client end diff --git a/spec/ruby/library/socket/basicsocket/recvmsg_nonblock_spec.rb b/spec/ruby/library/socket/basicsocket/recvmsg_nonblock_spec.rb index 8d5f541a8e..f6f2dac3fa 100644 --- a/spec/ruby/library/socket/basicsocket/recvmsg_nonblock_spec.rb +++ b/spec/ruby/library/socket/basicsocket/recvmsg_nonblock_spec.rb @@ -236,7 +236,6 @@ describe 'BasicSocket#recvmsg_nonblock' do end ruby_version_is ""..."3.3" do - quarantine! do # May fail with "IO::EAGAINWaitReadable: Resource temporarily unavailable - recvfrom(2) would block" error it "returns an empty String as received data on a closed stream socket" do ready = false @@ -244,7 +243,11 @@ describe 'BasicSocket#recvmsg_nonblock' do client = @server.accept Thread.pass while !ready - client.recvmsg_nonblock(10) + begin + client.recvmsg_nonblock(10) + rescue IO::EAGAINWaitReadable + retry + end ensure client.close if client end @@ -259,7 +262,6 @@ describe 'BasicSocket#recvmsg_nonblock' do t.value.should.is_a? Array t.value[0].should == "" end - end end ruby_version_is "3.3" do @@ -271,7 +273,11 @@ describe 'BasicSocket#recvmsg_nonblock' do client = @server.accept Thread.pass while !ready - client.recvmsg_nonblock(10) + begin + client.recvmsg_nonblock(10) + rescue IO::EAGAINWaitReadable + retry + end ensure client.close if client end |