| 1052 | /* Implementations in socket.h */ |
| 1053 | |
| 1054 | static int parse_port(estring_view& ep) { |
| 1055 | auto pos = ep.find_last_of(':'); |
| 1056 | if (pos == estring::npos) return -1; |
| 1057 | auto port_str = ep.substr(pos + 1); |
| 1058 | if (!port_str.all_digits()) return -1; |
| 1059 | auto port = port_str.to_uint64(); |
| 1060 | if (port > UINT16_MAX) return -1; |
| 1061 | ep = (pos > 2 && ep[0] == '[') ? ep.substr(1, pos - 2) |
| 1062 | : ep.substr(0, pos); |
| 1063 | return (int)port; |
| 1064 | } |
| 1065 | |
| 1066 | static void parse_addr(std::string_view s, IPAddr* addr) { |
| 1067 | if (s.length() >= INET6_ADDRSTRLEN - 1) return; |
no test coverage detected