Transition to table structs, use OnceAgain for fetching tables
This commit is contained in:
@@ -2,67 +2,35 @@ package state
|
||||
|
||||
import (
|
||||
"github.com/safing/portbase/log"
|
||||
"github.com/safing/portmaster/network/socket"
|
||||
)
|
||||
|
||||
var (
|
||||
tcp4Connections []*socket.ConnectionInfo
|
||||
tcp4Listeners []*socket.BindInfo
|
||||
func (table *tcpTable) updateTables() {
|
||||
table.fetchOnceAgain.Do(func() {
|
||||
table.lock.Lock()
|
||||
defer table.lock.Unlock()
|
||||
|
||||
tcp6Connections []*socket.ConnectionInfo
|
||||
tcp6Listeners []*socket.BindInfo
|
||||
connections, listeners, err := table.fetchTable()
|
||||
if err != nil {
|
||||
log.Warningf("state: failed to get TCP%d socket table: %s", table.version, err)
|
||||
return
|
||||
}
|
||||
|
||||
udp4Binds []*socket.BindInfo
|
||||
|
||||
udp6Binds []*socket.BindInfo
|
||||
)
|
||||
|
||||
func updateTCP4Tables() (connections []*socket.ConnectionInfo, listeners []*socket.BindInfo) {
|
||||
var err error
|
||||
connections, listeners, err = getTCP4Table()
|
||||
if err != nil {
|
||||
log.Warningf("state: failed to get TCP4 socket table: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
tcp4Connections = connections
|
||||
tcp4Listeners = listeners
|
||||
return
|
||||
table.connections = connections
|
||||
table.listeners = listeners
|
||||
})
|
||||
}
|
||||
|
||||
func updateTCP6Tables() (connections []*socket.ConnectionInfo, listeners []*socket.BindInfo) {
|
||||
var err error
|
||||
connections, listeners, err = getTCP6Table()
|
||||
if err != nil {
|
||||
log.Warningf("state: failed to get TCP6 socket table: %s", err)
|
||||
return
|
||||
}
|
||||
func (table *udpTable) updateTable() {
|
||||
table.fetchOnceAgain.Do(func() {
|
||||
table.lock.Lock()
|
||||
defer table.lock.Unlock()
|
||||
|
||||
tcp6Connections = connections
|
||||
tcp6Listeners = listeners
|
||||
return
|
||||
}
|
||||
|
||||
func updateUDP4Table() (binds []*socket.BindInfo) {
|
||||
var err error
|
||||
binds, err = getUDP4Table()
|
||||
if err != nil {
|
||||
log.Warningf("state: failed to get UDP4 socket table: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
udp4Binds = binds
|
||||
return
|
||||
}
|
||||
|
||||
func updateUDP6Table() (binds []*socket.BindInfo) {
|
||||
var err error
|
||||
binds, err = getUDP6Table()
|
||||
if err != nil {
|
||||
log.Warningf("state: failed to get UDP6 socket table: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
udp6Binds = binds
|
||||
return
|
||||
binds, err := table.fetchTable()
|
||||
if err != nil {
|
||||
log.Warningf("state: failed to get UDP%d socket table: %s", table.version, err)
|
||||
return
|
||||
}
|
||||
|
||||
table.binds = binds
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user