go-xmpp/src/xmpp/dns.go

35 lines
704 B
Go

package xmpp
import (
"fmt"
"net"
)
const (
XMPP_CLIENT_PORT = 5222
)
// Perform a DNS SRV lookup and return an ordered list of "host:port" TCP
// addresses for the JID's home server.
func HomeServerAddrs(jid JID) (addr []string, err error) {
// DNS lookup.
_, addrs, err := net.LookupSRV("xmpp-client", "tcp", jid.Domain)
if err != nil {
return
}
// If there's nothing in DNS then assume the JID's domain and the standard
// port will work.
if len(addrs) == 0 {
addr = []string{fmt.Sprintf("%s:%d", jid.Domain, XMPP_CLIENT_PORT)}
return
}
// Build list of "host:port" strings.
for _, a := range addrs {
addr = append(addr, fmt.Sprintf("%s:%d", a.Target, a.Port))
}
return
}