Fix handling of connections without process

This commit is contained in:
Daniel
2023-07-28 16:50:35 +02:00
parent 5802cb2bf7
commit a33526a976
3 changed files with 18 additions and 7 deletions

View File

@@ -69,13 +69,16 @@ func cleanConnections() (activePIDs map[int]struct{}) {
PID: process.UndefinedProcessID,
}, now)
activePIDs[conn.process.Pid] = struct{}{}
// Step 2: mark as ended
if !exists {
// Step 2: mark end
conn.Ended = nowUnix
conn.Save()
}
// If the connection has an associated process, add its PID to the active PID list.
if conn.process != nil {
activePIDs[conn.process.Pid] = struct{}{}
}
case conn.Ended < deleteOlderThan:
// Step 3: delete
// DEBUG:

View File

@@ -656,14 +656,21 @@ func (conn *Connection) Failed(reason, reasonOptionKey string) {
func (conn *Connection) SetVerdict(newVerdict Verdict, reason, reasonOptionKey string, reasonCtx interface{}) (ok bool) {
conn.SetVerdictDirectly(newVerdict)
// Set reason and context.
conn.Reason.Msg = reason
conn.Reason.Context = reasonCtx
// Reset option key.
conn.Reason.OptionKey = ""
conn.Reason.Profile = ""
if reasonOptionKey != "" && conn.Process() != nil {
conn.Reason.OptionKey = reasonOptionKey
conn.Reason.Profile = conn.Process().Profile().GetProfileSource(conn.Reason.OptionKey)
// Set option key if data is available.
if reasonOptionKey != "" {
lp := conn.Process().Profile()
if lp != nil {
conn.Reason.OptionKey = reasonOptionKey
conn.Reason.Profile = lp.GetProfileSource(conn.Reason.OptionKey)
}
}
return true // TODO: remove

View File

@@ -111,7 +111,8 @@ func CleanProcessStorage(activePIDs map[int]struct{}) {
// The PID of a process does not change.
// Check if this is a special process.
if p.Pid == UnidentifiedProcessID || p.Pid == SystemProcessID {
switch p.Pid {
case UnidentifiedProcessID, UnsolicitedProcessID, SystemProcessID:
p.profile.MarkStillActive()
continue
}