aboutsummaryrefslogtreecommitdiffstats
path: root/test/drb
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-08-08 15:44:26 -0700
committerJeremy Evans <code@jeremyevans.net>2019-10-16 12:51:13 -0700
commit567e312d1f56c27ecb4fa20deac4311f05ee5507 (patch)
treece646365886656ec13ec4e6ffc0f2d57f5dc9f91 /test/drb
parent50b8033d6b7404670ee985de1473fffc10dd7d9c (diff)
downloadruby-567e312d1f56c27ecb4fa20deac4311f05ee5507.tar.gz
Do not raise an exception on a closed DRb socket
This rescues some exceptions that could happen with a closed or shutdown DRb socket. This can prevent the server from exiting if an client socket is closed directly after it is accepted. Fixes [Bug #8039]
Diffstat (limited to 'test/drb')
-rw-r--r--test/drb/test_drb.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/test/drb/test_drb.rb b/test/drb/test_drb.rb
index 4e8f5cb0ec..b4399573aa 100644
--- a/test/drb/test_drb.rb
+++ b/test/drb/test_drb.rb
@@ -327,4 +327,19 @@ class TestBug4409 < Test::Unit::TestCase
end
end
+class TestDRbTCP < Test::Unit::TestCase
+ def test_immediate_close
+ server = DRb::DRbServer.new('druby://:0')
+ host, port, = DRb::DRbTCPSocket.send(:parse_uri, server.uri)
+ socket = TCPSocket.open host, port
+ socket.shutdown
+ socket.close
+ client = DRb::DRbTCPSocket.new(server.uri, socket)
+ assert client
+ client.close
+ server.stop_service
+ server.thread.join
+ end
+end
+
end