Исправлена обработка chunk transfer encoding для случаев, когда конец сообщения в отдельном пакете

This commit is contained in:
serega6531
2020-10-15 01:01:06 +03:00
parent f0fbc2d1a3
commit be43c1d68e
2 changed files with 6 additions and 6 deletions

View File

@@ -12,16 +12,15 @@ import org.springframework.web.socket.sockjs.SockJsTransportFailureException;
import ru.serega6531.packmate.model.pojo.SubscriptionMessage; import ru.serega6531.packmate.model.pojo.SubscriptionMessage;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
@Service @Service
@Slf4j @Slf4j
public class SubscriptionService { public class SubscriptionService {
private final List<WebSocketSession> subscribers = Collections.synchronizedList(new ArrayList<>()); private final List<WebSocketSession> subscribers = new CopyOnWriteArrayList<>();
private final ObjectMapper mapper; private final ObjectMapper mapper;

View File

@@ -58,7 +58,8 @@ public class HttpChunksProcessor {
} }
private void checkCompleteChunk(List<Packet> packets, int start) { private void checkCompleteChunk(List<Packet> 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) { if (end) {
processChunk(packets, start); processChunk(packets, start);