From 07e2f413ab891306d3cdd8e49d0b13acc5e4f679 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 9 Feb 2009 20:40:27 -0800 Subject: SocketHelper: unlink UNIX sockets if they exist 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. --- lib/unicorn/socket.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'lib') 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) ] -- cgit v1.2.3-24-ge0c7