summaryrefslogtreecommitdiff
path: root/ext/socket/lib/socket.rb
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-11 07:51:53 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-02-11 07:51:53 +0000
commit0a954e9117168f0221b7cfd833b1e2ea6243ba16 (patch)
treec4fca19ab1a781f28f36c12c02c018fece547b3f /ext/socket/lib/socket.rb
parentff955766d496954140ed9c72ac0be898cbb913da (diff)
* ext/socket/lib/socket.rb (Socket.unix_server_socket): call the block
if given. remove the socket file when the block exits. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/socket/lib/socket.rb')
-rw-r--r--ext/socket/lib/socket.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/socket/lib/socket.rb b/ext/socket/lib/socket.rb
index 0981b12edc..1099b7fd2f 100644
--- a/ext/socket/lib/socket.rb
+++ b/ext/socket/lib/socket.rb
@@ -607,7 +607,16 @@ class Socket
if st && st.socket? && st.owned?
File.unlink path
end
- Addrinfo.unix(path).listen
+ s = Addrinfo.unix(path).listen
+ if block_given?
+ begin
+ yield s
+ ensure
+ File.unlink path
+ end
+ else
+ s
+ end
end
# creates a UNIX socket server on _path_.