diff --git a/nameserver/http.go b/nameserver/http.go index ece2b6c2..ac421c0e 100644 --- a/nameserver/http.go +++ b/nameserver/http.go @@ -27,7 +27,7 @@ func (n *Nameserver) HandleHTTP(router *mux.Router, dockerCli *docker.Client) { vars = mux.Vars(r) container = vars["container"] ipStr = vars["ip"] - hostname = dns.Fqdn(r.FormValue("fqdn")) + fqdn = r.FormValue("fqdn") ip, err = address.ParseIP(ipStr) ) if err != nil { @@ -35,16 +35,11 @@ func (n *Nameserver) HandleHTTP(router *mux.Router, dockerCli *docker.Client) { return } - if !dns.IsSubDomain(n.domain, hostname) { - n.infof("Ignoring registration %s %s %s (not a subdomain of %s)", hostname, ipStr, container, n.domain) - return - } - - n.AddEntry(hostname, container, n.ourName, ip) + n.AddEntryFQDN(fqdn, container, n.ourName, ip) if r.FormValue("check-alive") == "true" && dockerCli != nil && dockerCli.IsContainerNotRunning(container) { n.infof("container '%s' is not running: removing", container) - n.Delete(hostname, container, ipStr, ip) + n.Delete(dns.Fqdn(fqdn), container, ipStr, ip) } w.WriteHeader(204) diff --git a/nameserver/nameserver.go b/nameserver/nameserver.go index 6fcf1e84..75879276 100644 --- a/nameserver/nameserver.go +++ b/nameserver/nameserver.go @@ -91,6 +91,15 @@ func (n *Nameserver) AddEntry(hostname, containerid string, origin mesh.PeerName n.broadcastEntries(entry) } +func (n *Nameserver) AddEntryFQDN(fqdn, containerid string, origin mesh.PeerName, addr address.Address) { + hostname := dns.Fqdn(fqdn) + if !dns.IsSubDomain(n.domain, hostname) { + n.infof("Ignoring registration %s %s %s (not a subdomain of %s)", hostname, addr.String(), containerid, n.domain) + return + } + n.AddEntry(hostname, containerid, origin, addr) +} + func (n *Nameserver) Lookup(hostname string) []address.Address { n.RLock() defer n.RUnlock()