From be43c1d68eaa9b68cf588a39743a133e5ce7092b Mon Sep 17 00:00:00 2001 From: serega6531 Date: Thu, 15 Oct 2020 01:01:06 +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=B0=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20chunk=20transfer=20encoding=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B5=D0=B2,=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B3=D0=B4=D0=B0=20=D0=BA=D0=BE=D0=BD=D0=B5=D1=86=20=D1=81?= =?UTF-8?q?=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20?= =?UTF-8?q?=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=BC=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BA=D0=B5=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serega6531/packmate/service/SubscriptionService.java | 5 ++--- .../packmate/service/optimization/HttpChunksProcessor.java | 7 ++++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/ru/serega6531/packmate/service/SubscriptionService.java b/src/main/java/ru/serega6531/packmate/service/SubscriptionService.java index 009e89e..1865a4f 100644 --- a/src/main/java/ru/serega6531/packmate/service/SubscriptionService.java +++ b/src/main/java/ru/serega6531/packmate/service/SubscriptionService.java @@ -12,16 +12,15 @@ import org.springframework.web.socket.sockjs.SockJsTransportFailureException; import ru.serega6531.packmate.model.pojo.SubscriptionMessage; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.concurrent.CopyOnWriteArrayList; @Service @Slf4j public class SubscriptionService { - private final List subscribers = Collections.synchronizedList(new ArrayList<>()); + private final List subscribers = new CopyOnWriteArrayList<>(); private final ObjectMapper mapper; diff --git a/src/main/java/ru/serega6531/packmate/service/optimization/HttpChunksProcessor.java b/src/main/java/ru/serega6531/packmate/service/optimization/HttpChunksProcessor.java index a0cfa68..3355144 100644 --- a/src/main/java/ru/serega6531/packmate/service/optimization/HttpChunksProcessor.java +++ b/src/main/java/ru/serega6531/packmate/service/optimization/HttpChunksProcessor.java @@ -58,7 +58,8 @@ public class HttpChunksProcessor { } private void checkCompleteChunk(List packets, int start) { - boolean end = BytesUtils.endsWith(packets.get(packets.size() - 1).getContent(), "\r\n0\r\n\r\n".getBytes()); + boolean end = Arrays.equals(packets.get(packets.size() - 1).getContent(), "0\r\n\r\n".getBytes()) || + BytesUtils.endsWith(packets.get(packets.size() - 1).getContent(), "\r\n0\r\n\r\n".getBytes()); if (end) { processChunk(packets, start); @@ -122,7 +123,7 @@ public class HttpChunksProcessor { int c1 = buf.get(); int c2 = buf.get(); - if(c1 != '\r' || c2 != '\n') { + if (c1 != '\r' || c2 != '\n') { log.warn("Failed to merge chunks, chunk trailer is not equal to \\r\\n"); resetChunk(); return false; @@ -162,7 +163,7 @@ public class HttpChunksProcessor { if ((b >= '0' && b <= '9') || (b >= 'a' && b <= 'f')) { sb.append((char) b); } else if (b == '\r') { - if(buf.get() == '\n') { + if (buf.get() == '\n') { return Integer.parseInt(sb.toString(), 16); } else { return -1; // после \r не идет \n