mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-02-03 22:18:39 +00:00
internal/clientinfo: use ptr cache when listing clients
This commit is contained in:
committed by
Cuong Manh Le
parent
39a2cab051
commit
6e27f877ff
@@ -20,7 +20,7 @@ func newControlClient(addr string) *controlClient {
|
||||
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
|
||||
for _, r := range t.hostnameResolvers {
|
||||
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 != "" {
|
||||
res = append(res, &hostnameEntry{name: name, src: src})
|
||||
continue
|
||||
|
||||
@@ -40,6 +40,13 @@ func (p *ptrDiscover) String() string {
|
||||
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 {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||
defer cancel()
|
||||
|
||||
Reference in New Issue
Block a user