fix: dns resolution taking long and add caching options (#8)
This commit is contained in:
@@ -3,6 +3,7 @@ package tui
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/karol-broda/snitch/internal/collector"
|
||||
"github.com/karol-broda/snitch/internal/resolver"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
@@ -35,11 +36,20 @@ func (m model) tick() tea.Cmd {
|
||||
}
|
||||
|
||||
func (m model) fetchData() tea.Cmd {
|
||||
resolveAddrs := m.resolveAddrs
|
||||
return func() tea.Msg {
|
||||
conns, err := collector.GetConnections()
|
||||
if err != nil {
|
||||
return errMsg{err}
|
||||
}
|
||||
// pre-warm dns cache in parallel if resolution is enabled
|
||||
if resolveAddrs {
|
||||
addrs := make([]string, 0, len(conns)*2)
|
||||
for _, c := range conns {
|
||||
addrs = append(addrs, c.Laddr, c.Raddr)
|
||||
}
|
||||
resolver.ResolveAddrsParallel(addrs)
|
||||
}
|
||||
return dataMsg{connections: conns}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@ type Options struct {
|
||||
FilterSet bool // true if user specified any filter flags
|
||||
ResolveAddrs bool // when true, resolve IP addresses to hostnames
|
||||
ResolvePorts bool // when true, resolve port numbers to service names
|
||||
NoCache bool // when true, disable DNS caching
|
||||
}
|
||||
|
||||
func New(opts Options) model {
|
||||
|
||||
Reference in New Issue
Block a user