From fa2e9c24492ab2eaa89f55e76b73e0d59bd1927b Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Mon, 12 Sep 2016 19:45:35 -0700 Subject: [PATCH 1/2] Revert "Merge pull request #6365 from heyitsanthony/fix-dns-bind" This reverts commit af5ab7b3515cf023af7af94bc6e9063945802be0, reversing changes made to da6a0f0594f352539349013336614e08033a7eb3. --- embed/config.go | 27 --------------------------- integration/embed_test.go | 6 ------ 2 files changed, 33 deletions(-) diff --git a/embed/config.go b/embed/config.go index ffd58b862b7..94e95902c1d 100644 --- a/embed/config.go +++ b/embed/config.go @@ -17,7 +17,6 @@ package embed import ( "fmt" "io/ioutil" - "net" "net/http" "net/url" "strings" @@ -254,13 +253,6 @@ func (cfg *configYAML) configFromFile(path string) error { } func (cfg *Config) Validate() error { - if err := checkBindURLs(cfg.LPUrls); err != nil { - return err - } - if err := checkBindURLs(cfg.LCUrls); err != nil { - return err - } - // Check if conflicting flags are passed. nSet := 0 for _, v := range []bool{cfg.Durl != "", cfg.InitialCluster != "", cfg.DNSCluster != ""} { @@ -354,22 +346,3 @@ func (cfg Config) IsDefaultHost() (string, error) { } return "", defaultHostStatus } - -// checkBindURLs returns an error if any URL uses a domain name. -func checkBindURLs(urls []url.URL) error { - for _, url := range urls { - if url.Scheme == "unix" || url.Scheme == "unixs" { - continue - } - host := strings.Split(url.Host, ":")[0] - if host == "localhost" { - // special case for local address - // TODO: support /etc/hosts ? - continue - } - if net.ParseIP(host) == nil { - return fmt.Errorf("expected IP in URL for binding (%s)", url.String()) - } - } - return nil -} diff --git a/integration/embed_test.go b/integration/embed_test.go index 895b7f8a58b..4b27973fc14 100644 --- a/integration/embed_test.go +++ b/integration/embed_test.go @@ -40,8 +40,6 @@ func TestEmbedEtcd(t *testing.T) { {wpeers: 1, wclients: 1}, {wpeers: 2, wclients: 1}, {wpeers: 1, wclients: 2}, - {werr: "expected IP"}, - {werr: "expected IP"}, } urls := newEmbedURLs(10) @@ -60,10 +58,6 @@ func TestEmbedEtcd(t *testing.T) { setupEmbedCfg(&tests[5].cfg, []url.URL{urls[4]}, []url.URL{urls[5], urls[6]}) setupEmbedCfg(&tests[6].cfg, []url.URL{urls[7], urls[8]}, []url.URL{urls[9]}) - dnsURL, _ := url.Parse("http://whatever.test:12345") - tests[7].cfg.LCUrls = []url.URL{*dnsURL} - tests[8].cfg.LPUrls = []url.URL{*dnsURL} - dir := path.Join(os.TempDir(), fmt.Sprintf("embed-etcd")) os.RemoveAll(dir) defer os.RemoveAll(dir) From c7212b438dfabb2b28b8677bd07dfd01b92dc969 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Mon, 12 Sep 2016 19:49:22 -0700 Subject: [PATCH 2/2] embed: warn on domain name in listener --- embed/config.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/embed/config.go b/embed/config.go index 94e95902c1d..31a4ce987ef 100644 --- a/embed/config.go +++ b/embed/config.go @@ -17,6 +17,7 @@ package embed import ( "fmt" "io/ioutil" + "net" "net/http" "net/url" "strings" @@ -253,6 +254,13 @@ func (cfg *configYAML) configFromFile(path string) error { } func (cfg *Config) Validate() error { + if err := checkBindURLs(cfg.LPUrls); err != nil { + return err + } + if err := checkBindURLs(cfg.LCUrls); err != nil { + return err + } + // Check if conflicting flags are passed. nSet := 0 for _, v := range []bool{cfg.Durl != "", cfg.InitialCluster != "", cfg.DNSCluster != ""} { @@ -346,3 +354,27 @@ func (cfg Config) IsDefaultHost() (string, error) { } return "", defaultHostStatus } + +// checkBindURLs returns an error if any URL uses a domain name. +// TODO: return error in 3.2.0 +func checkBindURLs(urls []url.URL) error { + for _, url := range urls { + if url.Scheme == "unix" || url.Scheme == "unixs" { + continue + } + host, _, err := net.SplitHostPort(url.Host) + if err != nil { + return err + } + if host == "localhost" { + // special case for local address + // TODO: support /etc/hosts ? + continue + } + if net.ParseIP(host) == nil { + err := fmt.Errorf("expected IP in URL for binding (%s)", url.String()) + plog.Warning(err) + } + } + return nil +}