typedef struct {
- ngx_http_request_t *request;
- JSValue args;
- JSValue request_body;
- JSValue response_body;
+ ngx_js_opaque_t opaque;
+ JSValue args;
+ JSValue request_body;
+ JSValue response_body;
} ngx_http_qjs_request_t;
#endif
NJS_CHB_CTX_INIT(&chain, cx);
- r = req->request;
+ r = req->opaque.external;
rc = ngx_http_qjs_query_string_decode(&chain, r->args.data, r->args.len);
if (rc != NGX_OK) {
* Using lowest bit of the pointer to store the buffer type.
*/
type = (type == NGX_JS_BUFFER) ? 1 : 0;
- JS_SetOpaque(obj, (void *) ((uintptr_t) req->request | (uintptr_t) type));
+ JS_SetOpaque(obj, (void *) ((uintptr_t) req->opaque.external
+ | (uintptr_t) type));
return obj;
}
req->response_body = JS_UNDEFINED;
}
- r = req->request;
+ r = req->opaque.external;
b = r->out ? r->out->buf : NULL;
JS_FreeValue(cx, req->request_body);
}
- r = req->request;
+ r = req->opaque.external;
if (r->request_body == NULL || r->request_body->bufs == NULL) {
return JS_UNDEFINED;
return JS_ThrowTypeError(cx, "\"this\" is not a request object");
}
- r = req->request;
+ r = req->opaque.external;
ctx = ngx_http_get_module_ctx(r, ngx_http_js_module);
if (r->request_body) {
return JS_EXCEPTION;
}
- r = req->request;
+ r = req->opaque.external;
ctx = ngx_http_get_module_ctx(r, ngx_http_js_module);
if (r->request_body) {
return NULL;
}
- return req->request;
+ return req->opaque.external;
}
return JS_ThrowOutOfMemory(cx);
}
- req->request = r;
+ req->opaque.external = r;
req->args = JS_UNDEFINED;
req->request_body = JS_UNDEFINED;
req->response_body = JS_UNDEFINED;
} ngx_stream_qjs_event_t;
typedef struct {
- ngx_stream_session_t *session;
- JSValue callbacks[NGX_JS_EVENT_MAX];
+ ngx_js_opaque_t opaque;
+ JSValue callbacks[NGX_JS_EVENT_MAX];
} ngx_stream_qjs_session_t;
#endif
JSValueConst *argv)
{
ngx_stream_js_ctx_t *ctx;
+ ngx_stream_session_t *s;
ngx_stream_qjs_session_t *ses;
const ngx_stream_qjs_event_t *e;
return JS_ThrowTypeError(cx, "\"this\" is not a session object");
}
- ctx = ngx_stream_get_module_ctx(ses->session, ngx_stream_js_module);
+ s = ses->opaque.external;
+ ctx = ngx_stream_get_module_ctx(s, ngx_stream_js_module);
- e = ngx_stream_qjs_event(ses->session, cx, argv[0]);
+ e = ngx_stream_qjs_event(s, cx, argv[0]);
if (e == NULL) {
return JS_EXCEPTION;
}
* Using lowest bit of the pointer to store the buffer type.
*/
type = (type == NGX_JS_BUFFER) ? 1 : 0;
- JS_SetOpaque(obj, (void *) ((uintptr_t) ses->session | (uintptr_t) type));
+ JS_SetOpaque(obj, (void *) ((uintptr_t) ses->opaque.external
+ | (uintptr_t) type));
return obj;
}
return NULL;
}
- return ses->session;
+ return ses->opaque.external;
}
return JS_ThrowOutOfMemory(cx);
}
- ses->session = s;
+ ses->opaque.external = s;
for (i = 0; i < NGX_JS_EVENT_MAX; i++) {
ses->callbacks[i] = JS_UNDEFINED;