mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-03-30 15:08:33 +00:00

* [DEV-97] Moved github.com/daglabs/btcutil into github.com/daglabs/btcd/btcutil. * [DEV-97] Updated Gopkg.toml to no longer refer to btcutil. * [DEV-97] Renamed btcutil to util.
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package network
|
|
|
|
import (
|
|
"net"
|
|
)
|
|
|
|
// NormalizeAddresses returns a new slice with all the passed peer addresses
|
|
// normalized with the given default port, and all duplicates removed.
|
|
func NormalizeAddresses(addrs []string, defaultPort string) []string {
|
|
for i, addr := range addrs {
|
|
addrs[i] = NormalizeAddress(addr, defaultPort)
|
|
}
|
|
|
|
return removeDuplicateAddresses(addrs)
|
|
}
|
|
|
|
// NormalizeAddress returns addr with the passed default port appended if
|
|
// there is not already a port specified.
|
|
func NormalizeAddress(addr, defaultPort string) string {
|
|
_, _, err := net.SplitHostPort(addr)
|
|
if err != nil {
|
|
return net.JoinHostPort(addr, defaultPort)
|
|
}
|
|
return addr
|
|
}
|
|
|
|
// removeDuplicateAddresses returns a new slice with all duplicate entries in
|
|
// addrs removed.
|
|
func removeDuplicateAddresses(addrs []string) []string {
|
|
result := make([]string, 0, len(addrs))
|
|
seen := map[string]struct{}{}
|
|
for _, val := range addrs {
|
|
if _, ok := seen[val]; !ok {
|
|
result = append(result, val)
|
|
seen[val] = struct{}{}
|
|
}
|
|
}
|
|
return result
|
|
}
|