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