diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/http/DigestingRequestBody.kt b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/http/DigestingRequestBody.kt index 0eb56ef1d7..adf5e8b133 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/http/DigestingRequestBody.kt +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/http/DigestingRequestBody.kt @@ -41,8 +41,9 @@ class DigestingRequestBody( override fun writeTo(sink: BufferedSink) { val digestStream = ByteArrayOutputStream() val inner = SkippingOutputStream(contentStart, sink.outputStream()) - val outputStream: DigestingOutputStream = if (outputStreamFactory is AttachmentCipherOutputStreamFactory) { - outputStreamFactory.createIncrementalFor(inner, contentLength, digestStream) + val isIncremental = outputStreamFactory is AttachmentCipherOutputStreamFactory + val outputStream: DigestingOutputStream = if (isIncremental) { + (outputStreamFactory as AttachmentCipherOutputStreamFactory).createIncrementalFor(inner, contentLength, digestStream) } else { outputStreamFactory.createFor(inner) } @@ -61,10 +62,11 @@ class DigestingRequestBody( } outputStream.flush() - outputStream.close() - digestStream.close() - - incrementalDigest = digestStream.toByteArray() + if (isIncremental) { + outputStream.close() + digestStream.close() + incrementalDigest = digestStream.toByteArray() + } transmittedDigest = outputStream.transmittedDigest }