aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rinda
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-01-17 03:31:57 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-01-17 03:31:57 +0000
commitf2dfc8be843fa6a817606ded59a669757645a9a5 (patch)
tree3bdab7d6b9e4368e6d75912027bf9bd90d5cf599 /lib/rinda
parent8b7e99d6632dab52b126039640bb526b1adac313 (diff)
downloadruby-f2dfc8be843fa6a817606ded59a669757645a9a5.tar.gz
rinda/ring.rb (make_socket): do not keep socket on failures
This prevents leaked FD warnings on test/rinda/test_rinda.rb when testing on a machine without multicast support. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57355 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rinda')
-rw-r--r--lib/rinda/ring.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/rinda/ring.rb b/lib/rinda/ring.rb
index 9b3f13eb93..d82ecabfcc 100644
--- a/lib/rinda/ring.rb
+++ b/lib/rinda/ring.rb
@@ -135,7 +135,6 @@ module Rinda
socket = Socket.new(addrinfo.pfamily, addrinfo.socktype,
addrinfo.protocol)
- @sockets << socket
if addrinfo.ipv4_multicast? or addrinfo.ipv6_multicast? then
if Socket.const_defined?(:SO_REUSEPORT) then
@@ -166,6 +165,11 @@ module Rinda
end
socket
+ rescue
+ socket = socket.close if socket
+ raise
+ ensure
+ @sockets << socket if socket
end
##