General bug fixes to pass tests

This commit is contained in:
richtr 2014-09-11 14:32:24 +02:00
parent 0ae91b08c8
commit 28988a0358

20
zone.go
View File

@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"github.com/miekg/dns" "github.com/miekg/dns"
"net" "net"
"os"
"strings" "strings"
) )
@ -50,9 +51,6 @@ func (m *MDNSService) Init() error {
if m.Service == "" { if m.Service == "" {
return fmt.Errorf("Missing service name") return fmt.Errorf("Missing service name")
} }
if m.Addr == nil && m.HostName == nil {
return fmt.Errorf("Missing service host/address")
}
if m.Port == 0 { if m.Port == 0 {
return fmt.Errorf("Missing service port") return fmt.Errorf("Missing service port")
} }
@ -60,9 +58,9 @@ func (m *MDNSService) Init() error {
// Get host information // Get host information
hostName, err := os.Hostname() hostName, err := os.Hostname()
if err == nil { if err == nil {
m.HostName = fmt.Sprintf("%s.", m.HostName) m.HostName = fmt.Sprintf("%s.", hostName)
addrs, err := net.LookupIP(m.GostName) addrs, err := net.LookupIP(m.HostName)
if err != nil { if err != nil {
// Try appending the host domain suffix and lookup again // Try appending the host domain suffix and lookup again
// (required for Linux-based hosts) // (required for Linux-based hosts)
@ -161,7 +159,9 @@ func (m *MDNSService) instanceRecords(q dns.Question) []dns.RR {
case dns.TypeA: case dns.TypeA:
// Only handle if we have a ipv4 addr // Only handle if we have a ipv4 addr
ipv4 := m.Addr.To4() ipv4 := m.Addr.To4()
if m.ipv4Addr == nil || ipv4 == nil { if ipv4 != nil {
m.ipv4Addr = ipv4
} else if m.ipv4Addr == nil {
return nil return nil
} }
a := &dns.A{ a := &dns.A{
@ -171,14 +171,16 @@ func (m *MDNSService) instanceRecords(q dns.Question) []dns.RR {
Class: dns.ClassINET, Class: dns.ClassINET,
Ttl: defaultTTL, Ttl: defaultTTL,
}, },
A: m.ipv4Addr || ipv4, A: m.ipv4Addr,
} }
return []dns.RR{a} return []dns.RR{a}
case dns.TypeAAAA: case dns.TypeAAAA:
// Only handle if we have a ipv6 addr // Only handle if we have a ipv6 addr
ipv6 := m.Addr.To16() ipv6 := m.Addr.To16()
if m.ipv6Addr == nil || m.Addr.To4() != nil { if ipv6 != nil && m.Addr.To4() == nil {
m.ipv6Addr = ipv6
} else if m.ipv6Addr == nil && m.Addr.To4() != nil {
return nil return nil
} }
a4 := &dns.AAAA{ a4 := &dns.AAAA{
@ -188,7 +190,7 @@ func (m *MDNSService) instanceRecords(q dns.Question) []dns.RR {
Class: dns.ClassINET, Class: dns.ClassINET,
Ttl: defaultTTL, Ttl: defaultTTL,
}, },
AAAA: m.ipv6Addr || ipv6, AAAA: m.ipv6Addr,
} }
return []dns.RR{a4} return []dns.RR{a4}