diff --git a/lib/puma/binder.rb b/lib/puma/binder.rb index 1c498dbf21..0e58cf6457 100644 --- a/lib/puma/binder.rb +++ b/lib/puma/binder.rb @@ -111,7 +111,10 @@ def parse(binds, logger) bak = params.fetch('backlog', 1024).to_i io = add_tcp_listener uri.host, uri.port, opt, bak - logger.log "* Listening on #{str}" + + @ios.each do |i| + logger.log "* Listening on tcp://#{i.local_address.ip_unpack.join(':')}" + end end @listeners << [str, io] if io diff --git a/test/test_binder.rb b/test/test_binder.rb index 89a7e58416..018516d1a3 100644 --- a/test/test_binder.rb +++ b/test/test_binder.rb @@ -95,4 +95,24 @@ def test_binder_parses_tlsv1_1_enabled refute ssl_context_for_binder(@binder).no_tlsv1_1 end + + def test_correct_zero_port + @events = Puma::Events.strings + @binder = Puma::Binder.new(@events) + @binder.parse(["tcp://localhost:0"], @events) + + m = %r!tcp://127.0.0.1:(\d+)!.match(@events.stdout.string) + port = m[1].to_i + + refute_equal 0, port + end + + def test_logs_all_localhost_bindings + @events = Puma::Events.strings + @binder = Puma::Binder.new(@events) + @binder.parse(["tcp://localhost:0"], @events) + + assert_match %r!tcp://127.0.0.1:(\d+)!, @events.stdout.string + assert_match %r!tcp://::1:(\d+)!, @events.stdout.string + end end