From: Tom Clegg Date: Thu, 14 Apr 2022 19:41:16 +0000 (-0400) Subject: Merge branch '18995-addrislocal' X-Git-Tag: 2.5.0~205 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/0b69c198f55f0294a3be1599256e8e73dfe2d000?hp=6fffa62bdb67c691e6958cf6f73c4a5fd32e0746 Merge branch '18995-addrislocal' refs #18995 Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/lib/boot/supervisor.go b/lib/boot/supervisor.go index b56e5ac725..a055f2b954 100644 --- a/lib/boot/supervisor.go +++ b/lib/boot/supervisor.go @@ -946,7 +946,11 @@ func (super *Supervisor) autofillConfig() error { } func addrIsLocal(addr string) (bool, error) { - return true, nil + if h, _, err := net.SplitHostPort(addr); err != nil { + return false, err + } else { + addr = net.JoinHostPort(h, "0") + } listener, err := net.Listen("tcp", addr) if err == nil { listener.Close() diff --git a/lib/boot/supervisor_test.go b/lib/boot/supervisor_test.go new file mode 100644 index 0000000000..b80fe1ed4c --- /dev/null +++ b/lib/boot/supervisor_test.go @@ -0,0 +1,57 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +package boot + +import ( + "net" + "testing" + + check "gopkg.in/check.v1" +) + +func Test(t *testing.T) { + check.TestingT(t) +} + +type supervisorSuite struct{} + +var _ = check.Suite(&supervisorSuite{}) + +func (s *supervisorSuite) TestAddrIsLocal(c *check.C) { + is, err := addrIsLocal("0.0.0.0:0") + c.Check(err, check.IsNil) + c.Check(is, check.Equals, true) + + is, err = addrIsLocal("127.0.0.1:9") + c.Check(err, check.IsNil) + c.Check(is, check.Equals, true) + + is, err = addrIsLocal("127.0.0.127:32767") + c.Check(err, check.IsNil) + c.Check(is, check.Equals, true) + + is, err = addrIsLocal("[::1]:32767") + c.Check(err, check.IsNil) + c.Check(is, check.Equals, true) + + is, err = addrIsLocal("8.8.8.8:32767") + c.Check(err, check.IsNil) + c.Check(is, check.Equals, false) + + is, err = addrIsLocal("example.com:32767") + c.Check(err, check.IsNil) + c.Check(is, check.Equals, false) + + is, err = addrIsLocal("1.2.3.4.5:32767") + c.Check(err, check.NotNil) + + ln, err := net.Listen("tcp", ":") + c.Assert(err, check.IsNil) + defer ln.Close() + is, err = addrIsLocal(ln.Addr().String()) + c.Check(err, check.IsNil) + c.Check(is, check.Equals, true) + +}