diff --git a/core/core.js b/core/core.js index 2f8392a3..c4e266fd 100644 --- a/core/core.js +++ b/core/core.js @@ -13,8 +13,6 @@ let gStatsTimer = false; let g_handler_index = 0; /** Whether updating accounts information is currently scheduled. */ let g_update_accounts_scheduled; -/** Time between pings, in milliseconds. */ -const k_ping_interval = 60 * 1000; /** ** App constructor. @@ -219,7 +217,7 @@ function postMessageInternal(from, to, message) { * @param options Other options. * @return The process. */ -async function getProcessBlob(blobId, key, options) { +exports.getProcessBlob = async function getProcessBlob(blobId, key, options) { let process = gProcesses[key]; if (!process && !(options && 'create' in options && !options.create)) { let resolveReady; @@ -239,7 +237,6 @@ async function getProcessBlob(blobId, key, options) { } process.lastActive = Date.now(); process.lastPing = null; - process.timeout = k_ping_interval; process.ready = new Promise(function (resolve, reject) { resolveReady = resolve; rejectReady = reject; @@ -692,16 +689,7 @@ async function getProcessBlob(blobId, key, options) { } } return process; -} - -/** - * Get or create a process for an app blob. - * @param blobId The blob identifier. - * @param key A unique key for the invocation. - * @param options Other options. - * @return The process. - */ -exports.getProcessBlob = getProcessBlob; +}; /** * Send any changed account information. diff --git a/src/httpd.app.c b/src/httpd.app.c index bb6279e8..84d42ebe 100644 --- a/src/httpd.app.c +++ b/src/httpd.app.c @@ -237,16 +237,19 @@ static void _httpd_auth_query_work(tf_ssb_t* ssb, void* user_data) static void _httpd_app_kill_task(app_t* work) { JSContext* context = work->request->context; - if (!JS_IsUndefined(work->process)) + if (JS_IsObject(work->process)) { JSValue task = JS_GetPropertyStr(context, work->process, "task"); - if (!JS_IsUndefined(task)) + if (JS_IsObject(task)) { JSValue kill = JS_GetPropertyStr(context, task, "kill"); - JSValue result = JS_Call(context, kill, task, 0, NULL); - tf_util_report_error(context, result); - JS_FreeValue(context, result); - JS_FreeValue(context, kill); + if (!JS_IsUndefined(kill)) + { + JSValue result = JS_Call(context, kill, task, 0, NULL); + tf_util_report_error(context, result); + JS_FreeValue(context, result); + JS_FreeValue(context, kill); + } } JS_FreeValue(context, task); } diff --git a/src/util.js.c b/src/util.js.c index a6cb3689..173516a0 100644 --- a/src/util.js.c +++ b/src/util.js.c @@ -227,14 +227,12 @@ bool tf_util_report_error(JSContext* context, JSValue value) tf_printf("ERROR: %s\n", string); JS_FreeCString(context, string); - JSValue stack = JS_GetPropertyStr(context, value, "stack"); - if (!JS_IsUndefined(stack)) + const char* stack = tf_util_get_property_as_string(context, value, "stack"); + if (stack && *stack) { - const char* stack_str = JS_ToCString(context, stack); - tf_printf("%s\n", stack_str); - JS_FreeCString(context, stack_str); + tf_printf("%s\n", stack); } - JS_FreeValue(context, stack); + JS_FreeCString(context, stack); tf_task_send_error_to_parent(task, value); is_error = true;