Add home server from JID lookup helper.
This commit is contained in:
parent
2776e78613
commit
2a32fc1e44
|
|
@ -0,0 +1,34 @@
|
|||
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
|
||||
}
|
||||
Loading…
Reference in New Issue