diff --git a/microscript/ILibDuktape_EncryptionStream.c b/microscript/ILibDuktape_EncryptionStream.c index e613d99..edbd0b3 100644 --- a/microscript/ILibDuktape_EncryptionStream.c +++ b/microscript/ILibDuktape_EncryptionStream.c @@ -78,7 +78,18 @@ void ILibDuktape_EncryptionStream_encrypted_WriteEndSink(ILibDuktape_DuplexStrea char out[5000]; int outLen = 0; - EVP_DecryptFinal(ptrs->decryptedCTX, (unsigned char*)out, &outLen); + if (!EVP_DecryptFinal(ptrs->decryptedCTX, (unsigned char*)out, &outLen)) + { + // Decrypt Error + ILibDuktape_EventEmitter_SetupEmit(ptrs->clear->readableStream->ctx, ptrs->clear->readableStream->object, "error"); // [emit][this][error] + duk_push_string(ptrs->clear->readableStream->ctx, "Decrypt Error"); // [emit][this][error][msg] + if (duk_pcall_method(ptrs->clear->readableStream->ctx, 2) != 0) // [ret] + { + ILibDuktape_Process_UncaughtException(ptrs->clear->readableStream->ctx); + } + duk_pop(ptrs->clear->readableStream->ctx); // ... + outLen = 0; + } if (outLen > 0) { ILibDuktape_DuplexStream_WriteData(ptrs->clear, out, outLen); diff --git a/microscript/ILibDuktape_ReadableStream.c b/microscript/ILibDuktape_ReadableStream.c index bf00adf..7f28166 100644 --- a/microscript/ILibDuktape_ReadableStream.c +++ b/microscript/ILibDuktape_ReadableStream.c @@ -977,6 +977,7 @@ ILibDuktape_readableStream* ILibDuktape_ReadableStream_InitEx(duk_context *ctx, ILibDuktape_EventEmitter_CreateEventEx(emitter, "end"); ILibDuktape_EventEmitter_CreateEventEx(emitter, "data"); ILibDuktape_EventEmitter_CreateEventEx(emitter, "close"); + ILibDuktape_EventEmitter_CreateEventEx(emitter, "error"); ILibDuktape_CreateInstanceMethod(ctx, "pause", ILibDuktape_readableStream_pause, 0); ILibDuktape_CreateInstanceMethod(ctx, "resume", ILibDuktape_readableStream_resume, 0);