5
5
"log"
6
6
"strings"
7
7
"sync"
8
+ "time"
8
9
9
10
"github.com/akto-api-security/mirroring-api-logging/ebpf/uprobeBuilder/ssl"
10
11
"github.com/akto-api-security/mirroring-api-logging/trafficUtil/utils"
@@ -29,15 +30,17 @@ type Process struct {
29
30
}
30
31
31
32
type ProcessFactory struct {
32
- processMap map [int32 ]Process
33
- mutex * sync.RWMutex
33
+ processMap map [int32 ]Process
34
+ mutex * sync.RWMutex
35
+ unattachedProcess map [int32 ]bool
34
36
}
35
37
36
38
// NewFactory creates a new instance of the factory.
37
39
func NewFactory () * ProcessFactory {
38
40
return & ProcessFactory {
39
- processMap : make (map [int32 ]Process ),
40
- mutex : & sync.RWMutex {},
41
+ processMap : make (map [int32 ]Process ),
42
+ mutex : & sync.RWMutex {},
43
+ unattachedProcess : make (map [int32 ]bool ),
41
44
}
42
45
}
43
46
@@ -80,7 +83,13 @@ func (processFactory *ProcessFactory) AddNewProcessesToProbe(bpfModule *bcc.Modu
80
83
}
81
84
fmt .Printf ("Attempt for %v processes\n " , len (pidSet ))
82
85
for pid := range pidSet {
83
- _ , ok := processFactory .processMap [pid ]
86
+ time .Sleep (200 * time .Millisecond )
87
+ _ , ok := processFactory .unattachedProcess [pid ]
88
+ if ok {
89
+ fmt .Printf ("Not attempting for %v processes\n " , pid )
90
+ continue
91
+ }
92
+ _ , ok = processFactory .processMap [pid ]
84
93
if ! ok {
85
94
86
95
if checkSelf (pid ) {
@@ -94,13 +103,15 @@ func (processFactory *ProcessFactory) AddNewProcessesToProbe(bpfModule *bcc.Modu
94
103
if err != nil {
95
104
if ! probeAllPid {
96
105
fmt .Printf ("No libraries for pid: %v %v\n " , pid , err )
106
+ processFactory .unattachedProcess [pid ] = true
97
107
continue
98
108
}
99
109
}
100
110
101
111
libraries , err := FindLibrariesPathInMapFile (pid )
102
112
if err != nil {
103
113
fmt .Printf ("No libraries for pid: %v %v\n " , pid , err )
114
+ processFactory .unattachedProcess [pid ] = true
104
115
continue
105
116
}
106
117
@@ -149,6 +160,8 @@ func (processFactory *ProcessFactory) AddNewProcessesToProbe(bpfModule *bcc.Modu
149
160
log .Printf ("Node probing error: %v %v\n " , pid , err )
150
161
}
151
162
163
+ processFactory .unattachedProcess [pid ] = true
164
+
152
165
}
153
166
}
154
167
}
0 commit comments