diff --git a/request.go b/request.go index 8b40ffe..4f753e1 100644 --- a/request.go +++ b/request.go @@ -190,9 +190,7 @@ func (s *Server) handleConnect(ctx context.Context, conn conn, req *Request) err defer target.Close() // Send success - local := target.LocalAddr().(*net.TCPAddr) - bind := AddrSpec{IP: local.IP, Port: local.Port} - if err := sendReply(conn, successReply, &bind); err != nil { + if err := sendReply(conn, successReply, addrSpecFromNetAddr(target.LocalAddr())); err != nil { return fmt.Errorf("Failed to send reply: %v", err) } @@ -302,6 +300,13 @@ func readAddrSpec(r io.Reader) (*AddrSpec, error) { return d, nil } +func addrSpecFromNetAddr(addr net.Addr) *AddrSpec { + if tcpAddr, ok := addr.(*net.TCPAddr); ok { + return &AddrSpec{IP: tcpAddr.IP, Port: tcpAddr.Port} + } + return nil +} + // sendReply is used to send a reply message func sendReply(w io.Writer, resp uint8, addr *AddrSpec) error { // Format the address