Skip to content

Commit b3d26c5

Browse files
authored
Fix hostname resolution in UDP target addresses (#22)
* Add support for socks5h:// protocol * Remove inaccurate comments
1 parent 97828e0 commit b3d26c5

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

server.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,8 +388,35 @@ func (s *Server) handleAssociate(req *request) error {
388388
}
389389
continue
390390
}
391+
var targetIP net.IP
392+
if targetAddr.IP != nil {
393+
targetIP = targetAddr.IP
394+
} else if targetAddr.Name != "" {
395+
ips, err := net.LookupIP(targetAddr.Name)
396+
if err != nil {
397+
if s.Logger != nil {
398+
s.Logger.Println(fmt.Errorf("failed to resolve %s: %w", targetAddr.Name, err))
399+
}
400+
continue
401+
}
402+
if len(ips) == 0 {
403+
if s.Logger != nil {
404+
s.Logger.Println(fmt.Errorf("no IP addresses found for %s", targetAddr.Name))
405+
}
406+
continue
407+
}
408+
targetIP = ips[0]
409+
if s.Logger != nil {
410+
s.Logger.Println(fmt.Sprintf("Resolved %s to %v", targetAddr.Name, targetIP))
411+
}
412+
} else {
413+
if s.Logger != nil {
414+
s.Logger.Println(fmt.Errorf("no valid address in UDP packet"))
415+
}
416+
continue
417+
}
391418
target := &net.UDPAddr{
392-
IP: targetAddr.IP,
419+
IP: targetIP,
393420
Port: targetAddr.Port,
394421
}
395422
_, err = udpConn.WriteTo(reader.Bytes(), target)

0 commit comments

Comments
 (0)