From 8c094d4604a7c0834cde6c821592beafb844fe0c Mon Sep 17 00:00:00 2001 From: Rutherther Date: Tue, 14 Feb 2023 21:08:42 +0100 Subject: [PATCH] feat(pcap): delete only not seen connections --- Pcap/NosSmooth.Pcap/ConnectionData.cs | 8 +++++++- Pcap/NosSmooth.Pcap/PcapNostaleManager.cs | 3 ++- Pcap/NosSmooth.Pcap/PcapNostaleOptions.cs | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Pcap/NosSmooth.Pcap/ConnectionData.cs b/Pcap/NosSmooth.Pcap/ConnectionData.cs index b5de4d4..a6cff66 100644 --- a/Pcap/NosSmooth.Pcap/ConnectionData.cs +++ b/Pcap/NosSmooth.Pcap/ConnectionData.cs @@ -25,4 +25,10 @@ public record ConnectionData int DestinationPort, List SniffedData, DateTimeOffset FirstObservedAt -); \ No newline at end of file +) +{ + /// + /// Gets or sets the date time offset at which last data were sniffed. + /// + public DateTimeOffset LastReceivedAt { get; set; } +} \ No newline at end of file diff --git a/Pcap/NosSmooth.Pcap/PcapNostaleManager.cs b/Pcap/NosSmooth.Pcap/PcapNostaleManager.cs index a28dddb..592b98d 100644 --- a/Pcap/NosSmooth.Pcap/PcapNostaleManager.cs +++ b/Pcap/NosSmooth.Pcap/PcapNostaleManager.cs @@ -205,6 +205,7 @@ public class PcapNostaleManager } var data = _connections[tcpConnection]; + data.LastReceivedAt = DateTimeOffset.Now; if (data.SniffedData.Count < 5 && tcpPacket.PayloadData.Length < 500 && data.FirstObservedAt.AddMilliseconds(_options.CleanSniffedDataInterval) > DateTimeOffset.Now) { @@ -247,7 +248,7 @@ public class PcapNostaleManager _connections.TryRemove(connectionData); } - if (connectionData.Value.SniffedData.Count > 0 && connectionData.Value.FirstObservedAt.AddMilliseconds + if (connectionData.Value.SniffedData.Count > 0 && connectionData.Value.LastReceivedAt.AddMilliseconds (_options.CleanSniffedDataInterval) < DateTimeOffset.Now) { connectionData.Value.SniffedData.Clear(); diff --git a/Pcap/NosSmooth.Pcap/PcapNostaleOptions.cs b/Pcap/NosSmooth.Pcap/PcapNostaleOptions.cs index d426b9a..b474644 100644 --- a/Pcap/NosSmooth.Pcap/PcapNostaleOptions.cs +++ b/Pcap/NosSmooth.Pcap/PcapNostaleOptions.cs @@ -22,7 +22,7 @@ public class PcapNostaleOptions public long CleanSniffedDataInterval { get; set; } = 10 * 1000; /// - /// Gets or sets the time tcp connection should be forgotten in milliseconds. Default 10 minutes. + /// Gets or sets the time tcp connection should be forgotten in milliseconds. Default 1 minute. /// - public long ForgetConnectionInterval { get; set; } = 10 * 60 * 1000; + public long ForgetConnectionInterval { get; set; } = 60 * 1000; } \ No newline at end of file -- 2.48.1