diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-11 08:39:57 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-11 08:39:57 +0000 |
commit | 0be4d0aaee4f6a224696de524dedac90f9435b5f (patch) | |
tree | 1a1432cd9a9c9b86a074a04fe6b7af172dcba1fe /ext | |
parent | 20e571bde2d3821c2e3712c8734476f9800dd97d (diff) | |
download | ruby-0be4d0aaee4f6a224696de524dedac90f9435b5f.tar.gz ruby-0be4d0aaee4f6a224696de524dedac90f9435b5f.tar.xz ruby-0be4d0aaee4f6a224696de524dedac90f9435b5f.zip |
* 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
Diffstat (limited to 'ext')
-rw-r--r-- | ext/socket/lib/socket.rb | 17 |
1 files changed, 12 insertions, 5 deletions
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. |