Improve: simple dns prefetch
This commit is contained in:
@ -90,7 +90,7 @@ func (h *HttpAdapter) Addr() *constant.Addr {
|
||||
|
||||
func parseHttpAddr(target string) *constant.Addr {
|
||||
host, port, _ := net.SplitHostPort(target)
|
||||
|
||||
ipAddr, _ := net.ResolveIPAddr("ip", host)
|
||||
var addType int
|
||||
ip := net.ParseIP(host)
|
||||
switch {
|
||||
@ -105,6 +105,7 @@ func parseHttpAddr(target string) *constant.Addr {
|
||||
return &constant.Addr{
|
||||
AddrType: addType,
|
||||
Host: host,
|
||||
IP: &ipAddr.IP,
|
||||
Port: port,
|
||||
}
|
||||
}
|
||||
|
@ -65,22 +65,28 @@ func (s *SocksAdapter) Addr() *constant.Addr {
|
||||
|
||||
func parseSocksAddr(target socks.Addr) *constant.Addr {
|
||||
var host, port string
|
||||
var ip net.IP
|
||||
|
||||
switch target[0] {
|
||||
case socks.AtypDomainName:
|
||||
host = string(target[2 : 2+target[1]])
|
||||
port = strconv.Itoa((int(target[2+target[1]]) << 8) | int(target[2+target[1]+1]))
|
||||
ipAddr, err := net.ResolveIPAddr("ip", host)
|
||||
if err == nil {
|
||||
ip = ipAddr.IP
|
||||
}
|
||||
case socks.AtypIPv4:
|
||||
host = net.IP(target[1 : 1+net.IPv4len]).String()
|
||||
ip = net.IP(target[1 : 1+net.IPv4len])
|
||||
port = strconv.Itoa((int(target[1+net.IPv4len]) << 8) | int(target[1+net.IPv4len+1]))
|
||||
case socks.AtypIPv6:
|
||||
host = net.IP(target[1 : 1+net.IPv6len]).String()
|
||||
ip = net.IP(target[1 : 1+net.IPv6len])
|
||||
port = strconv.Itoa((int(target[1+net.IPv6len]) << 8) | int(target[1+net.IPv6len+1]))
|
||||
}
|
||||
|
||||
return &constant.Addr{
|
||||
AddrType: int(target[0]),
|
||||
Host: host,
|
||||
IP: &ip,
|
||||
Port: port,
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user