Skip to content

Commit d30bbf1

Browse files
Merge pull request #22 from FireTail-io/decouple-flushing
flush old conns in a separate goroutine
2 parents 461277e + 9d37f14 commit d30bbf1

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/request_and_response.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type httpRequestAndResponseStreamer struct {
3030
}
3131

3232
func (s *httpRequestAndResponseStreamer) getHandleAndPacketsChannel() (*pcap.Handle, <-chan gopacket.Packet) {
33-
handle, err := pcap.OpenLive("any", 1600, true, 10*time.Second)
33+
handle, err := pcap.OpenLive("any", 1600, true, pcap.BlockForever)
3434
if err != nil {
3535
log.Fatal(err)
3636
}
@@ -53,9 +53,18 @@ func (s *httpRequestAndResponseStreamer) start() {
5353
),
5454
)
5555

56-
handler, packetsChannel := s.getHandleAndPacketsChannel()
56+
go func() {
57+
ticker := time.Tick(time.Minute)
58+
for {
59+
select {
60+
case <-ticker:
61+
slog.Debug("Flushing old conns...")
62+
assembler.FlushOlderThan(time.Now().Add(-2 * time.Minute))
63+
}
64+
}
65+
}()
5766

58-
ticker := time.Tick(time.Minute)
67+
handler, packetsChannel := s.getHandleAndPacketsChannel()
5968
for {
6069
select {
6170
case packet, ok := <-packetsChannel:
@@ -95,9 +104,6 @@ func (s *httpRequestAndResponseStreamer) start() {
95104
"DstPort", tcp.DstPort.String(),
96105
)
97106
assembler.AssembleWithTimestamp(packet.NetworkLayer().NetworkFlow(), tcp, packet.Metadata().Timestamp)
98-
case <-ticker:
99-
assembler.FlushOlderThan(time.Now().Add(-2 * time.Minute))
100-
default:
101107
}
102108
}
103109
}

0 commit comments

Comments
 (0)