summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
##