From ba0c2f645e1715c7031cae1bccaacd80a7f8cffd Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Tue, 29 Jan 2019 10:46:16 -0800 Subject: [PATCH] Updated behavior, so if a HECI descriptor has a read error, it will emit 'error' instead of 'end' --- microscript/ILibDuktape_HECI.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/microscript/ILibDuktape_HECI.c b/microscript/ILibDuktape_HECI.c index 3e9579a..024b940 100644 --- a/microscript/ILibDuktape_HECI.c +++ b/microscript/ILibDuktape_HECI.c @@ -1027,10 +1027,19 @@ void ILibDuktape_HECI_PostSelect(void* object, int slct, fd_set *readset, fd_set } else { - ILibDuktape_DuplexStream_WriteEnd(h->session->stream); + ILibDuktape_EventEmitter_SetupEmit(h->ctx, h->session->stream->ParentObject, "error"); // [emit][this][error] + duk_push_string(h->ctx, "HECI Read Error"); // [emit][this][error][msg] + duk_pcall_method(h->ctx, 2); duk_pop(h->ctx); // ... + + duk_push_heapptr(h->ctx, h->session->stream->ParentObject); // [heci] + duk_del_prop_string(h->ctx, -1, ILibDuktape_HECI_Descriptor); + duk_pop(h->ctx); // ... + + int td = h->descriptor; + h->descriptor = -1; + close(td); } } - if (h->descriptor <= 0) { return; } if (FD_ISSET(h->descriptor, writeset)) { ILibDuktape_HECI_Session_WriteHandler_Process(h->session);