diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-02-09 20:40:27 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-02-09 20:40:27 -0800 |
commit | 07e2f413ab891306d3cdd8e49d0b13acc5e4f679 (patch) | |
tree | 8a56eaf5b5836957c5c84e6f071c32c0d892e7e8 | |
parent | a2dfa810e75d2618916aebf77078037bcb2204c6 (diff) | |
download | unicorn-07e2f413ab891306d3cdd8e49d0b13acc5e4f679.tar.gz |
We may have stale UNIX sockets leftover since we don't clean those up at_exit. So unlink them if we didn't inherit one.
-rw-r--r-- | lib/unicorn/socket.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/unicorn/socket.rb b/lib/unicorn/socket.rb index cba921f..60d4bf4 100644 --- a/lib/unicorn/socket.rb +++ b/lib/unicorn/socket.rb @@ -69,6 +69,17 @@ module Unicorn return address if address.kind_of?(Socket) domain, bind_addr = if address[0..0] == "/" + if File.exist?(address) + if File.socket?(address) + if self.respond_to?(:logger) + logger.info "unlinking existing socket=#{address}" + end + File.unlink(address) + else + raise ArgumentError, + "socket=#{address} specified but it is not a socket!" + end + end [ AF_UNIX, Socket.pack_sockaddr_un(address) ] elsif address =~ /^(\d+\.\d+\.\d+\.\d+):(\d+)$/ [ AF_INET, Socket.pack_sockaddr_in($2.to_i, $1) ] |