summaryrefslogtreecommitdiff
path: root/lib
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
commit22908245effa361d8deffd50230254f0fa18e06b (patch)
tree3bdab7d6b9e4368e6d75912027bf9bd90d5cf599 /lib
parenta34f9c7e9ae4139e372f10e77fbceb9ea847950f (diff)
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')
-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
##