From e3e521b3850979f3bf081082bc8a80a05694070c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A1vio?= <25729991+saviosg@users.noreply.github.com> Date: Thu, 12 Aug 2021 03:35:27 -0300 Subject: [PATCH] Wait for drain event before calling Writable.write() (#639) --- src/WAConnection/Utils.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/WAConnection/Utils.ts b/src/WAConnection/Utils.ts index cd7bac8..6f101c0 100644 --- a/src/WAConnection/Utils.ts +++ b/src/WAConnection/Utils.ts @@ -14,6 +14,7 @@ import KeyedDB from '@adiwajshing/keyed-db' import got, { Options, Response } from 'got' import { join } from 'path' import { IAudioMetadata } from 'music-metadata' +import { once } from 'events' const platformMap = { 'aix': 'AIX', @@ -359,7 +360,7 @@ export const encryptedStream = async(media: WAMediaUpload, mediaType: MessageTyp for await(const data of stream) { fileLength += data.length sha256Plain = sha256Plain.update(data) - writeStream && writeStream.write(data) + if (writeStream && !writeStream.write(data)) await once(writeStream, 'drain') onChunk(aes.update(data)) } onChunk(aes.final()) @@ -371,9 +372,9 @@ export const encryptedStream = async(media: WAMediaUpload, mediaType: MessageTyp const fileEncSha256 = sha256Enc.digest() encWriteStream.write(mac) - encWriteStream.close() + encWriteStream.end() - writeStream && writeStream.close() + writeStream && writeStream.end() return { mediaKey, @@ -466,4 +467,4 @@ export function extensionForMediaMessage(message: WAMessageContent) { extension = getExtension (messageContent.mimetype) } return extension -} \ No newline at end of file +}