* request->status_text.length = 0;
*/
+ pool = ngx_external_pool(vm, njs_vm_external_ptr(vm));
+
response->code = 200;
- response->headers.guard = GUARD_RESPONSE;
+ response->headers = njs_mp_zalloc(njs_vm_memory_pool(vm),
+ sizeof(ngx_js_headers_t));
+ if (response->headers == NULL) {
+ njs_vm_memory_error(vm);
+ return NJS_ERROR;
+ }
- pool = ngx_external_pool(vm, njs_vm_external_ptr(vm));
+ response->headers->guard = GUARD_RESPONSE;
- rc = ngx_list_init(&response->headers.header_list, pool, 4,
+ rc = ngx_list_init(&response->headers->header_list, pool, 4,
sizeof(ngx_js_tb_elt_t));
if (rc != NGX_OK) {
njs_vm_memory_error(vm);
return NJS_ERROR;
}
- ret = ngx_js_headers_fill(vm, &response->headers, value);
+ ret = ngx_js_headers_fill(vm, response->headers, value);
if (ret != NJS_OK) {
return NJS_ERROR;
}
njs_chb_append(&response->chain, bd.start, bd.length);
if (njs_value_is_string(body)) {
- ret = ngx_js_headers_append(vm, &response->headers,
+ ret = ngx_js_headers_append(vm, response->headers,
(u_char *) "Content-Type",
njs_length("Content-Type"),
(u_char *) "text/plain;charset=UTF-8",
request->method.len = 3;
request->body.data = (u_char *) "";
request->body.len = 0;
- request->headers.guard = GUARD_REQUEST;
-
pool = ngx_external_pool(vm, external);
- rc = ngx_list_init(&request->headers.header_list, pool, 4,
+ request->headers = njs_mp_zalloc(njs_vm_memory_pool(vm),
+ sizeof(ngx_js_headers_t));
+ if (request->headers == NULL) {
+ njs_vm_memory_error(vm);
+ return NJS_ERROR;
+ }
+
+ request->headers->guard = GUARD_REQUEST;
+
+ rc = ngx_list_init(&request->headers->header_list, pool, 4,
sizeof(ngx_js_tb_elt_t));
if (rc != NGX_OK) {
njs_vm_memory_error(vm);
request->credentials = orig->credentials;
request->mode = orig->mode;
- ret = ngx_js_headers_inherit(vm, &request->headers, &orig->headers);
+ ret = ngx_js_headers_inherit(vm, request->headers, orig->headers);
if (ret != NJS_OK) {
return NJS_ERROR;
}
* just allocating a new one.
*/
- ngx_memset(&request->headers, 0, sizeof(ngx_js_headers_t));
- request->headers.guard = GUARD_REQUEST;
+ ngx_memset(request->headers, 0, sizeof(ngx_js_headers_t));
+ request->headers->guard = GUARD_REQUEST;
- rc = ngx_list_init(&request->headers.header_list, pool, 4,
+ rc = ngx_list_init(&request->headers->header_list, pool, 4,
sizeof(ngx_js_tb_elt_t));
if (rc != NGX_OK) {
njs_vm_memory_error(vm);
return NJS_ERROR;
}
- ret = ngx_js_headers_fill(vm, &request->headers, headers);
+ ret = ngx_js_headers_fill(vm, request->headers, headers);
if (ret != NJS_OK) {
return NJS_ERROR;
}
return NJS_ERROR;
}
- if (!ngx_js_headers_has(&request->headers,
+ if (!ngx_js_headers_has(request->headers,
(u_char *) "Content-Type",
njs_length("Content-Type"))
&& njs_value_is_string(value))
{
- ret = ngx_js_headers_append(vm, &request->headers,
+ ret = ngx_js_headers_append(vm, request->headers,
(u_char *) "Content-Type",
njs_length("Content-Type"),
(u_char *) "text/plain;charset=UTF-8",
if (njs_value_is_null(njs_value_arg(&request->header_value))) {
ret = njs_vm_external_create(vm, njs_value_arg(&request->header_value),
ngx_http_js_fetch_headers_proto_id,
- &request->headers, 0);
+ request->headers, 0);
if (ret != NJS_OK) {
njs_vm_memory_error(vm);
return NJS_ERROR;
if (njs_value_is_null(njs_value_arg(&response->header_value))) {
ret = njs_vm_external_create(vm, njs_value_arg(&response->header_value),
ngx_http_js_fetch_headers_proto_id,
- &response->headers, 0);
+ response->headers, 0);
if (ret != NJS_OK) {
njs_vm_memory_error(vm);
return NJS_ERROR;
hp = &http->http_parse;
- if (http->response.headers.header_list.size == 0) {
- rc = ngx_list_init(&http->response.headers.header_list, http->pool, 4,
+ if (http->response.headers == NULL) {
+ http->response.headers = ngx_pcalloc(http->pool,
+ sizeof(ngx_js_headers_t));
+ if (http->response.headers == NULL) {
+ ngx_js_http_error(http, "alloc failed");
+ return NGX_ERROR;
+ }
+ }
+
+ if (http->response.headers->header_list.size == 0) {
+ rc = ngx_list_init(&http->response.headers->header_list, http->pool, 4,
sizeof(ngx_js_tb_elt_t));
if (rc != NGX_OK) {
ngx_js_http_error(http, "alloc failed");
len = hp->header_name_end - hp->header_name_start;
vlen = hp->header_end - hp->header_start;
- rc = http->append_headers(http, &http->response.headers,
+ rc = http->append_headers(http, http->response.headers,
hp->header_name_start, len,
hp->header_start, vlen);
}
if (rc == NGX_DONE) {
- http->response.headers.guard = GUARD_IMMUTABLE;
+ http->response.headers->guard = GUARD_IMMUTABLE;
break;
}
ngx_list_part_t *part;
ngx_js_tb_elt_t *h;
- part = &request->headers.header_list.part;
+ part = &request->headers->header_list.part;
h = part->elts;
for (i = 0; /* void */; i++) {
has_host = 0;
has_user_agent = 0;
- part = &request->headers.header_list.part;
+ part = &request->headers->header_list.part;
h = part->elts;
for (i = 0; /* void */; i++) {
u_char m[8];
uint8_t body_used;
ngx_str_t body;
- ngx_js_headers_t headers;
+ ngx_js_headers_t *headers;
njs_opaque_value_t header_value;
} ngx_js_request_t;
ngx_str_t status_text;
uint8_t body_used;
njs_chb_t chain;
- ngx_js_headers_t headers;
+ ngx_js_headers_t *headers;
njs_opaque_value_t header_value;
} ngx_js_response_t;
request->method.len = 3;
request->body.data = NULL;
request->body.len = 0;
- request->headers.guard = GUARD_REQUEST;
pool = ngx_qjs_external_pool(cx, JS_GetContextOpaque(cx));
- rc = ngx_list_init(&request->headers.header_list, pool, 4,
+ request->headers = ngx_pcalloc(pool, sizeof(ngx_js_headers_t));
+ if (request->headers == NULL) {
+ JS_ThrowOutOfMemory(cx);
+ return NGX_ERROR;
+ }
+
+ request->headers->guard = GUARD_REQUEST;
+
+ rc = ngx_list_init(&request->headers->header_list, pool, 4,
sizeof(ngx_js_tb_elt_t));
if (rc != NGX_OK) {
JS_ThrowOutOfMemory(cx);
request->credentials = orig->credentials;
request->mode = orig->mode;
- rc = ngx_qjs_headers_inherit(cx, &request->headers, &orig->headers);
+ rc = ngx_qjs_headers_inherit(cx, request->headers, orig->headers);
if (rc != NGX_OK) {
return NGX_ERROR;
}
* just allocating a new one.
*/
- ngx_memset(&request->headers, 0, sizeof(ngx_js_headers_t));
- request->headers.guard = GUARD_REQUEST;
+ ngx_memset(request->headers, 0, sizeof(ngx_js_headers_t));
+ request->headers->guard = GUARD_REQUEST;
- rc = ngx_list_init(&request->headers.header_list, pool, 4,
+ rc = ngx_list_init(&request->headers->header_list, pool, 4,
sizeof(ngx_js_tb_elt_t));
if (rc != NGX_OK) {
JS_FreeValue(cx, value);
return NGX_ERROR;
}
- rc = ngx_qjs_headers_fill(cx, &request->headers, value);
+ rc = ngx_qjs_headers_fill(cx, request->headers, value);
JS_FreeValue(cx, value);
if (rc != NGX_OK) {
return NGX_ERROR;
}
- if (!ngx_js_headers_has(&request->headers,
+ if (!ngx_js_headers_has(request->headers,
(u_char *) "Content-Type",
sizeof("Content-Type") - 1)
&& JS_IsString(value))
{
- rc = ngx_qjs_headers_append(cx, &request->headers,
+ rc = ngx_qjs_headers_append(cx, request->headers,
(u_char *) "Content-Type",
sizeof("Content-Type") - 1,
(u_char *) "text/plain;charset=UTF-8",
*/
response->code = 200;
- response->headers.guard = GUARD_RESPONSE;
- ret = ngx_list_init(&response->headers.header_list, pool, 4,
+ response->headers = ngx_pcalloc(pool, sizeof(ngx_js_headers_t));
+ if (response->headers == NULL) {
+ return JS_ThrowOutOfMemory(cx);
+ }
+
+ response->headers->guard = GUARD_RESPONSE;
+ ret = ngx_list_init(&response->headers->header_list, pool, 4,
sizeof(ngx_js_tb_elt_t));
if (ret != NGX_OK) {
return JS_ThrowOutOfMemory(cx);
return JS_ThrowTypeError(cx, "Headers is not an object");
}
- rc = ngx_qjs_headers_fill(cx, &response->headers, value);
+ rc = ngx_qjs_headers_fill(cx, response->headers, value);
JS_FreeValue(cx, value);
if (rc != NGX_OK) {
}
if (JS_IsString(body)) {
- rc = ngx_qjs_headers_append(cx, &response->headers,
+ rc = ngx_qjs_headers_append(cx, response->headers,
(u_char *) "Content-Type",
sizeof("Content-Type") - 1,
(u_char *) "text/plain;charset=UTF-8",
fetch = (ngx_qjs_fetch_t *) http;
- return ngx_qjs_headers_append(fetch->cx, &http->response.headers,
+ return ngx_qjs_headers_append(fetch->cx, http->response.headers,
name, len, value, vlen);
}
return JS_ThrowOutOfMemory(cx);
}
- JS_SetOpaque(header, &request->headers);
+ JS_SetOpaque(header, request->headers);
object->header_value = header;
}
return JS_ThrowOutOfMemory(cx);
}
- JS_SetOpaque(header, &response->headers);
+ JS_SetOpaque(header, response->headers);
object->header_value = header;
}