Fix: tun2socks not lookup IP

This commit is contained in:
gVisor bot 2019-02-11 15:44:42 +08:00
parent 2500169447
commit 09f6cd2ec4
3 changed files with 9 additions and 5 deletions

View file

@ -50,7 +50,3 @@ func (m *Metadata) String() string {
func (m *Metadata) Valid() bool {
return m.Host != "" || m.IP != nil
}
func (m *Metadata) NeedLoopUpHost() bool {
return m.Source == REDIR
}

View file

@ -219,6 +219,10 @@ func (r *Resolver) resolve(client []*nameserver, msg *D.Msg) <-chan *result {
return ch
}
func (r *Resolver) IsMapping() bool {
return r.mapping
}
type NameServer struct {
Net string
Addr string

View file

@ -107,11 +107,15 @@ func (t *Tunnel) resolveIP(host string) (net.IP, error) {
return t.resolver.ResolveIP(host)
}
func (t *Tunnel) needLookupIP() bool {
return t.hasResolver() && t.resolver.IsMapping()
}
func (t *Tunnel) handleConn(localConn C.ServerAdapter) {
defer localConn.Close()
metadata := localConn.Metadata()
if metadata.NeedLoopUpHost() && t.hasResolver() {
if t.needLookupIP() {
host, exist := t.resolver.IPToHost(*metadata.IP)
if exist {
metadata.Host = host