Wait for drain event before calling Writable.write() (#639)

This commit is contained in:
Sávio
2021-08-12 03:35:27 -03:00
committed by GitHub
parent 76c929208a
commit e3e521b385

View File

@@ -14,6 +14,7 @@ import KeyedDB from '@adiwajshing/keyed-db'
import got, { Options, Response } from 'got' import got, { Options, Response } from 'got'
import { join } from 'path' import { join } from 'path'
import { IAudioMetadata } from 'music-metadata' import { IAudioMetadata } from 'music-metadata'
import { once } from 'events'
const platformMap = { const platformMap = {
'aix': 'AIX', 'aix': 'AIX',
@@ -359,7 +360,7 @@ export const encryptedStream = async(media: WAMediaUpload, mediaType: MessageTyp
for await(const data of stream) { for await(const data of stream) {
fileLength += data.length fileLength += data.length
sha256Plain = sha256Plain.update(data) sha256Plain = sha256Plain.update(data)
writeStream && writeStream.write(data) if (writeStream && !writeStream.write(data)) await once(writeStream, 'drain')
onChunk(aes.update(data)) onChunk(aes.update(data))
} }
onChunk(aes.final()) onChunk(aes.final())
@@ -371,9 +372,9 @@ export const encryptedStream = async(media: WAMediaUpload, mediaType: MessageTyp
const fileEncSha256 = sha256Enc.digest() const fileEncSha256 = sha256Enc.digest()
encWriteStream.write(mac) encWriteStream.write(mac)
encWriteStream.close() encWriteStream.end()
writeStream && writeStream.close() writeStream && writeStream.end()
return { return {
mediaKey, mediaKey,
@@ -466,4 +467,4 @@ export function extensionForMediaMessage(message: WAMessageContent) {
extension = getExtension (messageContent.mimetype) extension = getExtension (messageContent.mimetype)
} }
return extension return extension
} }