mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-08-10 13:20:33 +02:00
internal/clientinfo: use ptr cache when listing clients
This commit is contained in:
@@ -20,7 +20,7 @@ func newControlClient(addr string) *controlClient {
|
|||||||
return d.DialContext(ctx, "unix", addr)
|
return d.DialContext(ctx, "unix", addr)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Timeout: time.Second * 5,
|
Timeout: time.Second * 30,
|
||||||
}}
|
}}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -229,6 +229,14 @@ func (t *Table) lookupHostnameAll(ip, mac string) []*hostnameEntry {
|
|||||||
var res []*hostnameEntry
|
var res []*hostnameEntry
|
||||||
for _, r := range t.hostnameResolvers {
|
for _, r := range t.hostnameResolvers {
|
||||||
src := r.String()
|
src := r.String()
|
||||||
|
// For ptrDiscover, lookup hostname may block due to server unavailable,
|
||||||
|
// so only lookup from cache to prevent timeout reached.
|
||||||
|
if ptrResolver, ok := r.(*ptrDiscover); ok {
|
||||||
|
if name := ptrResolver.lookupHostnameFromCache(ip); name != "" {
|
||||||
|
res = append(res, &hostnameEntry{name: name, src: src})
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
if name := r.LookupHostnameByIP(ip); name != "" {
|
if name := r.LookupHostnameByIP(ip); name != "" {
|
||||||
res = append(res, &hostnameEntry{name: name, src: src})
|
res = append(res, &hostnameEntry{name: name, src: src})
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -40,6 +40,13 @@ func (p *ptrDiscover) String() string {
|
|||||||
return "ptr"
|
return "ptr"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *ptrDiscover) lookupHostnameFromCache(ip string) string {
|
||||||
|
if val, ok := p.hostname.Load(ip); ok {
|
||||||
|
return val.(string)
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func (p *ptrDiscover) lookupHostname(ip string) string {
|
func (p *ptrDiscover) lookupHostname(ip string) string {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|||||||
Reference in New Issue
Block a user