mirror of
https://github.com/FluuxIO/go-xmpp
synced 2024-11-17 15:29:37 +00:00
1c792e61c6
Code also ensures that brackets are properly added when encoding an IPV6 address.
33 lines
855 B
Go
33 lines
855 B
Go
package xmpp
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// ensurePort adds a port to an address if none are provided.
|
|
// It handles both IPV4 and IPV6 addresses.
|
|
func ensurePort(addr string, port int) string {
|
|
// This is an IPV6 address literal
|
|
if strings.HasPrefix(addr, "[") {
|
|
// if address has no port (behind his ipv6 address) - add default port
|
|
if strings.LastIndex(addr, ":") <= strings.LastIndex(addr, "]") {
|
|
return addr + ":" + strconv.Itoa(port)
|
|
}
|
|
return addr
|
|
}
|
|
|
|
// This is either an IPV6 address without bracket or an IPV4 address
|
|
switch strings.Count(addr, ":") {
|
|
case 0:
|
|
// This is IPV4 without port
|
|
return addr + ":" + strconv.Itoa(port)
|
|
case 1:
|
|
// This is IPV$ with port
|
|
return addr
|
|
default:
|
|
// This is IPV6 without port, as you need to use bracket with port in IPV6
|
|
return "[" + addr + "]:" + strconv.Itoa(port)
|
|
}
|
|
}
|