From 0be4d0aaee4f6a224696de524dedac90f9435b5f Mon Sep 17 00:00:00 2001 From: akr Date: Wed, 11 Feb 2009 08:39:57 +0000 Subject: * ext/socket/lib/socket.rb (Socket.udp_server_sockets): call the block if given. close the sockets when the block exits. (Socket.udp_server_loop): use udp_server_sockets in block form. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@22238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/socket/lib/socket.rb | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'ext/socket/lib/socket.rb') diff --git a/ext/socket/lib/socket.rb b/ext/socket/lib/socket.rb index f5382950a..4f2e7294a 100644 --- a/ext/socket/lib/socket.rb +++ b/ext/socket/lib/socket.rb @@ -493,7 +493,15 @@ class Socket end } - sockets + if block_given? + begin + yield sockets + ensure + sockets.each {|s| s.close if !s.closed? } if sockets + end + else + sockets + end end # :call-seq: @@ -550,10 +558,9 @@ class Socket # } # def self.udp_server_loop(host=nil, port, &b) # :yield: message, message_source - sockets = udp_server_sockets(host, port) - udp_server_loop_on(sockets, &b) - ensure - sockets.each {|s| s.close if !s.closed? } if sockets + udp_server_sockets(host, port) {|sockets| + udp_server_loop_on(sockets, &b) + } end # UDP address information used by Socket.udp_server_loop. -- cgit