in src/main.cpp [56:79]
tuple<string, uint16_t> get_host_and_port(string const & endpoint, uint16_t default_port)
{
try
{
size_t position = endpoint.find(':');
if (position != string::npos && position != endpoint.length() - 1)
{
const string host = endpoint.substr(0, position);
const string port = endpoint.substr(position + 1, endpoint.length() - (position + 1));
const auto portnum = static_cast<uint16_t>(stoi(port, &position));
if (port.length() == 0 || position != port.length()) throw std::invalid_argument("");
return std::make_tuple(host, portnum);
}
else
{
if (position == endpoint.length() - 1) throw std::invalid_argument("");
return std::make_tuple(endpoint, default_port);
}
}
catch (std::invalid_argument &)
{
throw std::invalid_argument((boost::format("Invalid endpoint specified: %1%") % endpoint).str());
}
}