Skip to content

Commit

Permalink
QuickJS: fixed memory leak in js_periodic handler.
Browse files Browse the repository at this point in the history
  • Loading branch information
xeioex committed Feb 20, 2025
1 parent a2accf8 commit 2bb93b5
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
17 changes: 16 additions & 1 deletion nginx/ngx_http_js_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,7 @@ static ngx_http_request_t *ngx_http_qjs_request(JSValueConst val);
static JSValue ngx_http_qjs_request_make(JSContext *cx, ngx_int_t proto_id,
ngx_http_request_t *r);
static void ngx_http_qjs_request_finalizer(JSRuntime *rt, JSValue val);
static void ngx_http_qjs_periodic_finalizer(JSRuntime *rt, JSValue val);
#endif

static ngx_pool_t *ngx_http_js_pool(ngx_http_request_t *r);
Expand Down Expand Up @@ -1097,7 +1098,7 @@ static JSClassDef ngx_http_qjs_request_class = {

static JSClassDef ngx_http_qjs_periodic_class = {
"PeriodicSession",
.finalizer = NULL,
.finalizer = ngx_http_qjs_periodic_finalizer,
};


Expand Down Expand Up @@ -7553,6 +7554,20 @@ ngx_http_qjs_request_finalizer(JSRuntime *rt, JSValue val)
}


static void
ngx_http_qjs_periodic_finalizer(JSRuntime *rt, JSValue val)
{
ngx_http_qjs_request_t *req;

req = JS_GetOpaque(val, NGX_QJS_CLASS_ID_HTTP_PERIODIC);
if (req == NULL) {
return;
}

js_free_rt(rt, req);
}


static ngx_engine_t *
ngx_engine_qjs_clone(ngx_js_ctx_t *ctx, ngx_js_loc_conf_t *cf,
njs_int_t proto_id, void *external)
Expand Down
17 changes: 16 additions & 1 deletion nginx/ngx_stream_js_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ static ngx_stream_session_t *ngx_stream_qjs_session(JSValueConst val);
static JSValue ngx_stream_qjs_session_make(JSContext *cx, ngx_int_t proto_id,
ngx_stream_session_t *s);
static void ngx_stream_qjs_session_finalizer(JSRuntime *rt, JSValue val);
static void ngx_stream_qjs_periodic_finalizer(JSRuntime *rt, JSValue val);

#endif

Expand Down Expand Up @@ -813,7 +814,7 @@ static JSClassDef ngx_stream_qjs_session_class = {

static JSClassDef ngx_stream_qjs_periodic_class = {
"Periodic",
.finalizer = NULL,
.finalizer = ngx_stream_qjs_periodic_finalizer,
};


Expand Down Expand Up @@ -2812,6 +2813,20 @@ ngx_stream_qjs_session_finalizer(JSRuntime *rt, JSValue val)
}


static void
ngx_stream_qjs_periodic_finalizer(JSRuntime *rt, JSValue val)
{
ngx_stream_qjs_session_t *ses;

ses = JS_GetOpaque(val, NGX_QJS_CLASS_ID_STREAM_PERIODIC);
if (ses == NULL) {
return;
}

js_free_rt(rt, ses);
}


static ngx_engine_t *
ngx_engine_qjs_clone(ngx_js_ctx_t *ctx, ngx_js_loc_conf_t *cf,
njs_int_t proto_id, void *external)
Expand Down

0 comments on commit 2bb93b5

Please sign in to comment.