From 1c237bfec81bbdb210a1965d84d2e5ef85badc8e Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sun, 28 Jul 2019 21:57:31 +0000 Subject: [PATCH] Do not use Z_FINISH in permessage-deflate --- src/PerMessageDeflate.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/PerMessageDeflate.h b/src/PerMessageDeflate.h index 5db6b71..6a9ac9e 100644 --- a/src/PerMessageDeflate.h +++ b/src/PerMessageDeflate.h @@ -139,13 +139,16 @@ struct InflationStream { do { inflationStream.next_out = (Bytef *) zlibContext->inflationBuffer; inflationStream.avail_out = LARGE_BUFFER_SIZE; - err = ::inflate(&inflationStream, Z_FINISH); - if (!inflationStream.avail_in) { + + err = ::inflate(&inflationStream, Z_SYNC_FLUSH); + if (err == Z_OK && inflationStream.avail_out) { break; } zlibContext->dynamicInflationBuffer.append(zlibContext->inflationBuffer, LARGE_BUFFER_SIZE - inflationStream.avail_out); - } while (err == Z_BUF_ERROR && zlibContext->dynamicInflationBuffer.length() <= maxPayloadLength); + + + } while (inflationStream.avail_out == 0 && zlibContext->dynamicInflationBuffer.length() <= maxPayloadLength); inflateReset(&inflationStream);