]> git.kaiwu.me - njs.git/commitdiff
Fetch: fixed compatibility with nginx-1.22 and below.
authorDmitry Volyntsev <xeioex@nginx.com>
Sat, 4 Feb 2023 06:17:53 +0000 (22:17 -0800)
committerDmitry Volyntsev <xeioex@nginx.com>
Sat, 4 Feb 2023 06:17:53 +0000 (22:17 -0800)
Previously, ngx_table_elt_t structure was used directly in njs fetch
code.  This prevents from building with nginx-1.22 as the structure
was changed after nginx-1.22.

The fix is to use njs defined structure instead of ngx_table_elt_t.

This fixes #610 issue on Github.

nginx/ngx_js_fetch.c

index 7954b3a7fb1ac89a1aa998068deb955610f9b94c..d9772c3ddb5af4252aa1ab2acf0e99297c8182e5 100644 (file)
@@ -47,6 +47,16 @@ typedef struct {
 } ngx_js_http_chunk_parse_t;
 
 
+typedef struct ngx_js_tb_elt_s  ngx_js_tb_elt_t;
+
+struct ngx_js_tb_elt_s {
+    ngx_uint_t        hash;
+    ngx_str_t         key;
+    ngx_str_t         value;
+    ngx_js_tb_elt_t  *next;
+};
+
+
 typedef struct {
     enum {
         GUARD_NONE = 0,
@@ -651,7 +661,7 @@ ngx_js_ext_fetch(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     njs_value_t         *init, *value;
     ngx_js_http_t       *http;
     ngx_list_part_t     *part;
-    ngx_table_elt_t     *h;
+    ngx_js_tb_elt_t     *h;
     ngx_js_request_t     request;
     ngx_connection_t    *c;
     ngx_resolver_ctx_t  *ctx;
@@ -850,7 +860,7 @@ ngx_js_ext_headers_constructor(njs_vm_t *vm, njs_value_t *args,
         return NJS_ERROR;
     }
 
-    rc = ngx_list_init(&headers->header_list, pool, 4, sizeof(ngx_table_elt_t));
+    rc = ngx_list_init(&headers->header_list, pool, 4, sizeof(ngx_js_tb_elt_t));
     if (rc != NGX_OK) {
         njs_vm_memory_error(vm);
         return NJS_ERROR;
@@ -933,7 +943,7 @@ ngx_js_ext_response_constructor(njs_vm_t *vm, njs_value_t *args,
     pool = ngx_external_pool(vm, njs_vm_external_ptr(vm));
 
     rc = ngx_list_init(&response->headers.header_list, pool, 4,
-                       sizeof(ngx_table_elt_t));
+                       sizeof(ngx_js_tb_elt_t));
     if (rc != NGX_OK) {
         njs_vm_memory_error(vm);
         return NJS_ERROR;
@@ -1076,7 +1086,7 @@ ngx_js_headers_inherit(njs_vm_t *vm, ngx_js_headers_t *headers,
     njs_int_t         ret;
     ngx_uint_t        i;
     ngx_list_part_t  *part;
-    ngx_table_elt_t  *h;
+    ngx_js_tb_elt_t  *h;
 
     part = &orig->header_list.part;
     h = part->elts;
@@ -1900,7 +1910,7 @@ ngx_js_request_constructor(njs_vm_t *vm, ngx_js_request_t *request,
     pool = ngx_external_pool(vm, external);
 
     rc = ngx_list_init(&request->headers.header_list, pool, 4,
-                       sizeof(ngx_table_elt_t));
+                       sizeof(ngx_js_tb_elt_t));
     if (rc != NGX_OK) {
         njs_vm_memory_error(vm);
         return NJS_ERROR;
@@ -2031,7 +2041,7 @@ ngx_js_request_constructor(njs_vm_t *vm, ngx_js_request_t *request,
              */
 
             rc = ngx_list_init(&request->headers.header_list, pool, 4,
-                               sizeof(ngx_table_elt_t));
+                               sizeof(ngx_js_tb_elt_t));
             if (rc != NGX_OK) {
                 njs_vm_memory_error(vm);
                 return NJS_ERROR;
@@ -2161,7 +2171,7 @@ ngx_js_headers_append(njs_vm_t *vm, ngx_js_headers_t *headers,
 {
     u_char           *p, *end;
     ngx_uint_t        i;
-    ngx_table_elt_t  *h, **ph;
+    ngx_js_tb_elt_t  *h, **ph;
     ngx_list_part_t  *part;
     const njs_str_t  *f;
 
@@ -2360,7 +2370,7 @@ ngx_js_http_process_headers(ngx_js_http_t *http)
 
     if (http->response.headers.header_list.size == 0) {
         rc = ngx_list_init(&http->response.headers.header_list, http->pool, 4,
-                           sizeof(ngx_table_elt_t));
+                           sizeof(ngx_js_tb_elt_t));
         if (rc != NGX_OK) {
             ngx_js_http_error(http, 0, "alloc failed");
             return NGX_ERROR;
@@ -3149,7 +3159,7 @@ ngx_headers_js_get(njs_vm_t *vm, njs_value_t *value, njs_str_t *name,
     size_t             len;
     njs_int_t          rc;
     ngx_uint_t         i;
-    ngx_table_elt_t   *h, *ph;
+    ngx_js_tb_elt_t   *h, *ph;
     ngx_list_part_t   *part;
     ngx_js_headers_t  *headers;
 
@@ -3296,7 +3306,7 @@ ngx_headers_js_ext_delete(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     njs_str_t          name;
     ngx_uint_t         i;
     ngx_list_part_t   *part;
-    ngx_table_elt_t   *h;
+    ngx_js_tb_elt_t   *h;
     ngx_js_headers_t  *headers;
 
     headers = njs_vm_external(vm, ngx_http_js_fetch_headers_proto_id,
@@ -3478,7 +3488,7 @@ ngx_headers_js_ext_keys(njs_vm_t *vm, njs_value_t *value, njs_value_t *keys)
     ngx_uint_t         i, k, length;
     njs_value_t       *start;
     ngx_list_part_t   *part;
-    ngx_table_elt_t   *h;
+    ngx_js_tb_elt_t   *h;
     ngx_js_headers_t  *headers;
 
     headers = njs_vm_external(vm, ngx_http_js_fetch_headers_proto_id, value);
@@ -3558,7 +3568,7 @@ ngx_headers_js_ext_set(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     njs_str_t          name, value;
     ngx_uint_t         i;
     ngx_list_part_t   *part;
-    ngx_table_elt_t   *h, **ph, **pp;
+    ngx_js_tb_elt_t   *h, **ph, **pp;
     ngx_js_headers_t  *headers;
 
     headers = njs_vm_external(vm, ngx_http_js_fetch_headers_proto_id,