From 19ceb97bccf895f93a0158209e7732ca1e7a9f59 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Wed, 15 May 2019 01:06:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BE=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=81=D1=82=D1=80=D0=B8=D0=BC=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=BF=D0=BE=20=D1=82=D0=B0=D0=B9=D0=BC=D0=B0=D1=83?= =?UTF-8?q?=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ru/serega6531/packmate/PcapWorker.java | 11 +++++++++-- .../ru/serega6531/packmate/service/StreamService.java | 10 +++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/ru/serega6531/packmate/PcapWorker.java b/src/main/java/ru/serega6531/packmate/PcapWorker.java index 5427a8d..d218826 100644 --- a/src/main/java/ru/serega6531/packmate/PcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/PcapWorker.java @@ -203,9 +203,16 @@ public class PcapWorker implements PacketListener { if (stream.getProtocol() == protocol) { final List packets = entry.getValue(); if (System.currentTimeMillis() - packets.get(packets.size() - 1).getTimestamp() > timeoutMillis) { + if(streamService.saveNewStream(stream, packets)) { + streamsClosed++; + } + iterator.remove(); - streamService.saveNewStream(stream, packets); - streamsClosed++; + + if(protocol == Protocol.TCP) { + fins.remove(stream); + acks.remove(stream); + } } } } diff --git a/src/main/java/ru/serega6531/packmate/service/StreamService.java b/src/main/java/ru/serega6531/packmate/service/StreamService.java index aced456..809e290 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamService.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamService.java @@ -42,8 +42,11 @@ public class StreamService { this.ignoreEmptyPackets = ignoreEmptyPackets; } + /** + * @return был ли сохранен стрим + */ @Transactional - public void saveNewStream(UnfinishedStream unfinishedStream, List packets) { + public boolean saveNewStream(UnfinishedStream unfinishedStream, List packets) { final Optional serviceOptional = servicesService.findService( localIp, unfinishedStream.getFirstIp().getHostAddress(), @@ -55,7 +58,7 @@ public class StreamService { if (!serviceOptional.isPresent()) { log.warn("Не удалось сохранить стрим: сервиса на порту {} или {} не существует", unfinishedStream.getFirstPort(), unfinishedStream.getSecondPort()); - return; + return false; } Stream stream = new Stream(); @@ -69,7 +72,7 @@ public class StreamService { if(packets.isEmpty()) { log.debug("Стрим состоит только из пустых пакетов и не будет сохранен"); - return; + return false; } } @@ -89,6 +92,7 @@ public class StreamService { savedStream = save(savedStream); subscriptionService.broadcastNewStream(savedStream); + return true; } public Stream save(Stream stream) {