diff --git a/config/config.go b/config/config.go index 4b104b99f..f960cb9c9 100644 --- a/config/config.go +++ b/config/config.go @@ -727,7 +727,11 @@ type APIServer struct { // BindAddress returns a host:port string. func (a *APIServer) BindAddress() string { - return fmt.Sprintf("%s:%d", a.Bind, a.Port) + bind := a.Bind + if ip := net.ParseIP(bind); ip != nil && ip.To4() == nil { + bind = fmt.Sprintf("[%s]", bind) + } + return fmt.Sprintf("%s:%d", bind, a.Port) } // Validate validates the API server config diff --git a/config/config_test.go b/config/config_test.go index d6b7e88af..4cd1c819f 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -267,6 +267,16 @@ func TestAPIBindAddress(t *testing.T) { err := cfg.Validate() require.Nil(t, err) require.Equal(t, cfg.BindAddress(), "0.0.0.0:9998") + + cfg.Bind = "::" + err = cfg.Validate() + require.Nil(t, err) + require.Equal(t, cfg.BindAddress(), "[::]:9998") + + cfg.Bind = "1:2:3::4" + err = cfg.Validate() + require.Nil(t, err) + require.Equal(t, cfg.BindAddress(), "[1:2:3::4]:9998") } func TestDatabaseConfig(t *testing.T) {