From abbcdbc6b959b8210bcb61687150e787257272ed Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 23 Jun 2025 12:05:51 -0400 Subject: [PATCH] Fix bug where network sink would sometimes be closed early. --- .../signalservice/internal/push/http/DigestingRequestBody.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 c582d9108b..bd7abb2632 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 @@ -4,6 +4,7 @@ import okhttp3.MediaType import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.RequestBody import okio.BufferedSink +import org.signal.core.util.stream.NonClosingOutputStream import org.signal.libsignal.protocol.incrementalmac.ChunkSizeChoice import org.signal.libsignal.protocol.logging.Log import org.whispersystems.signalservice.api.crypto.DigestingOutputStream @@ -42,7 +43,7 @@ class DigestingRequestBody( @Throws(IOException::class) override fun writeTo(sink: BufferedSink) { val digestStream = ByteArrayOutputStream() - val inner = SkippingOutputStream(contentStart, sink.outputStream()) + val inner = SkippingOutputStream(contentStart, NonClosingOutputStream(sink.outputStream())) val isIncremental = incremental && outputStreamFactory is AttachmentCipherOutputStreamFactory val sizeChoice: ChunkSizeChoice = ChunkSizeChoice.inferChunkSize(contentLength.toInt()) val outputStream: DigestingOutputStream = if (isIncremental) {