1
0
Fork 0
mirror of https://github.com/puma/puma.git synced 2022-11-09 13:48:40 -05:00

Merge pull request #231 from urbaniak/socket-activation

Socket activation
This commit is contained in:
Evan Phoenix 2013-05-31 09:52:12 -07:00
commit 93ed2480d8

View file

@ -53,6 +53,24 @@ module Puma
@inherited_fds[url] = fd.to_i
remove << k
end
if k =~ /LISTEN_FDS/ && ENV['LISTEN_PID'].to_i == $$
v.to_i.times do |num|
fd = num + 3
sock = TCPServer.for_fd(fd)
begin
url = "unix://" + Socket.unpack_sockaddr_un(sock.getsockname)
rescue ArgumentError
port, addr = Socket.unpack_sockaddr_in(sock.getsockname)
if addr =~ /\:/
addr = "[#{addr}]"
end
url = "tcp://#{addr}:#{port}"
end
@inherited_fds[url] = sock
end
ENV.delete k
ENV.delete 'LISTEN_PID'
end
end
remove.each do |k|
@ -141,7 +159,12 @@ module Puma
logger.log "* Closing unused inherited connection: #{str}"
begin
IO.for_fd(fd).close
if fd.kind_of? TCPServer
fd.close
else
IO.for_fd(fd).close
end
rescue SystemCallError
end
@ -244,7 +267,11 @@ module Puma
def inherit_unix_listener(path, fd)
@unix_paths << path
s = UNIXServer.for_fd fd
if fd.kind_of? TCPServer
s = fd
else
s = UNIXServer.for_fd fd
end
@ios << s
s