func acquireAddr(req *fasthttp.Request) (string, bool) { addr := string(req.URI().Host()) if len(addr) == 0 { log.Fatalf("address cannot be empty") } isTLS := string(req.URI().Scheme()) == "https" tmp := strings.SplitN(addr, ":", 2) if len(tmp) != 2 { port := ":80" if isTLS { port = ":443" } return tmp[0] + port, isTLS } port := tmp[1] portInt, err := strconv.Atoi(port) if err != nil { log.Fatalf("cannot parse port %q of addr %q: %s", port, addr, err) } if portInt < 0 { log.Fatalf("upstreamHosts port %d cannot be negative: %q", portInt, addr) } return addr, isTLS }