fix: dns resolution taking long and add caching options (#8)

This commit is contained in:
Karol Broda
2025-12-24 11:12:39 +01:00
committed by GitHub
parent 1021ba13aa
commit b0226d1286
13 changed files with 1302 additions and 67 deletions

View File

@@ -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}
}
}