in agent/envoy_bootstrap/envoy_bootstrap.go [682:714]
func getXRayAddressAndPort() (string, int, error) {
port, err := env.OrInt("XRAY_DAEMON_PORT", 2000)
if err != nil {
return "", 0, err
}
addr := "127.0.0.1"
// AWS_XRAY_DAEMON_ADDRESS may contain a port, if it does it takes priorty over XRAY_DAEMON_PORT
if v := env.Get("AWS_XRAY_DAEMON_ADDRESS"); v != "" {
// We use regex to first check that we have a port since the
// net.SplitHostPort method requires a port exist...
if len(ipPortRegex.FindSubmatchIndex([]byte(v))) != 0 {
host, p, err := net.SplitHostPort(v)
if err != nil {
return "", 0, fmt.Errorf("Could not parse AWS_XRAY_DAEMON_ADDRESS: \"%s\".", v)
}
i, err := strconv.ParseInt(p, 10, strconv.IntSize)
if err != nil {
return "", 0, fmt.Errorf("Could not parse AWS_XRAY_DAEMON_ADDRESS: \"%s\".", v)
}
port = int(i)
addr = host
} else {
addr = v
}
// The x-ray address must be a static IP right now since
// the extension does not support pointing to a cluster
if net.ParseIP(addr) == nil {
return "", 0, fmt.Errorf("AWS_XRAY_DAEMON_ADDRESS must be a static IPv4 or IPv6 address such as \"127.0.0.1\".")
}
}
return addr, port, nil
}