Created
October 29, 2025 04:58
-
-
Save xeioex/c1ec0abea1a6b351d441d1e13f1c9604 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| commit 7a5de1585b7d65cf231f901ad9c6845ef3336a51 | |
| Author: Dmitry Volyntsev <[email protected]> | |
| Date: Tue Oct 28 21:56:56 2025 -0700 | |
| fixup! Fetch: making sure catch handler is executed asynchronously. | |
| diff --git a/nginx/ngx_js_fetch.c b/nginx/ngx_js_fetch.c | |
| index 91698d11..fd40a5ba 100644 | |
| --- a/nginx/ngx_js_fetch.c | |
| +++ b/nginx/ngx_js_fetch.c | |
| @@ -669,21 +669,12 @@ ngx_js_ext_fetch(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, | |
| fail: | |
| ngx_log_debug2(NGX_LOG_DEBUG_EVENT, http->log, 0, | |
| - "js http done fetch:%p rc:%i", fetch, NJS_ERROR); | |
| + "js http done fetch:%p rc:%d", fetch, NJS_ERROR); | |
| - ngx_js_http_close_peer(&fetch->http); | |
| + ngx_js_del_event(ngx_external_ctx(vm, njs_vm_external_ptr(vm)), | |
| + fetch->event); | |
| - if (fetch->event != NULL) { | |
| - ret = ngx_js_fetch_promissified_result(vm, njs_value_arg(&lvalue), | |
| - NJS_ERROR, retval); | |
| - | |
| - ngx_js_del_event(ngx_external_ctx(vm, njs_vm_external_ptr(vm)), | |
| - fetch->event); | |
| - | |
| - ngx_external_event_finalize(vm)(njs_vm_external_ptr(vm), ret); | |
| - } | |
| - | |
| - return NJS_OK; | |
| + return ngx_js_fetch_promissified_result(vm, NULL, NJS_ERROR, retval); | |
| } | |
| diff --git a/nginx/ngx_qjs_fetch.c b/nginx/ngx_qjs_fetch.c | |
| index 2c2ef18c..731fba44 100644 | |
| --- a/nginx/ngx_qjs_fetch.c | |
| +++ b/nginx/ngx_qjs_fetch.c | |
| @@ -402,21 +402,13 @@ ngx_qjs_ext_fetch(JSContext *cx, JSValueConst this_val, int argc, | |
| fail: | |
| ngx_log_debug2(NGX_LOG_DEBUG_EVENT, (&fetch->http)->log, 0, | |
| - "js http done fetch:%p rc:%i", fetch, NGX_ERROR); | |
| + "js http done fetch:%p rc:%d", fetch, NGX_ERROR); | |
| - ngx_js_http_close_peer(&fetch->http); | |
| + ngx_js_del_event(ngx_qjs_external_ctx(cx, external), fetch->event); | |
| - if (fetch->event != NULL) { | |
| - JS_FreeValue(cx, promise); | |
| - promise = qjs_promise_result(cx, JS_EXCEPTION); | |
| - | |
| - ctx = ngx_qjs_external_ctx(cx, external); | |
| - ngx_js_del_event(ctx, fetch->event); | |
| + JS_FreeValue(cx, promise); | |
| - ngx_qjs_external_event_finalize(cx)(external, rc); | |
| - } | |
| - | |
| - return promise; | |
| + return qjs_promise_result(cx, JS_EXCEPTION); | |
| } | |
| diff --git a/nginx/t/js_fetch.t b/nginx/t/js_fetch.t | |
| index bc9ee4c5..f3601b82 100644 | |
| --- a/nginx/t/js_fetch.t | |
| +++ b/nginx/t/js_fetch.t | |
| @@ -257,7 +257,7 @@ $t->write_file('test.js', <<EOF); | |
| }) | |
| }) | |
| - sync_catch = 'async'; | |
| + sync_catch = 'async'; | |
| } | |
| function broken_catch(r) { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment