From d2e9d7df9694311238c0c405b4932488b7cf2792 Mon Sep 17 00:00:00 2001 From: Nate Berkopec Date: Sat, 3 Jun 2017 09:21:03 -0600 Subject: [PATCH] Use Socket.ip_address_list to get loopback addresses --- lib/puma/binder.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/puma/binder.rb b/lib/puma/binder.rb index cfd55a3bdc..eb9a1d2c48 100644 --- a/lib/puma/binder.rb +++ b/lib/puma/binder.rb @@ -245,9 +245,10 @@ def parse(binds, logger) end end - def localhost_addresses - addrs = TCPSocket.gethostbyname "localhost" - addrs[3..-1].uniq + def loopback_addresses + Socket.ip_address_list.select do |addrinfo| + addrinfo.ipv6_loopback? || addrinfo.ipv4_loopback? + end.map { |addrinfo| addrinfo.ip_address }.uniq end # Tell the server to listen on host +host+, port +port+. @@ -259,7 +260,7 @@ def localhost_addresses # def add_tcp_listener(host, port, optimize_for_latency=true, backlog=1024) if host == "localhost" - localhost_addresses.each do |addr| + loopback_addresses.each do |addr| add_tcp_listener addr, port, optimize_for_latency, backlog end return @@ -298,7 +299,7 @@ def add_ssl_listener(host, port, ctx, MiniSSL.check if host == "localhost" - localhost_addresses.each do |addr| + loopback_addresses.each do |addr| add_ssl_listener addr, port, ctx, optimize_for_latency, backlog end return