From 9274f29acde6ef0ae667f42aa1d3f9577030441e Mon Sep 17 00:00:00 2001 From: "Sergey A. Osokin" Date: Sun, 10 Jul 2022 16:30:30 -0400 Subject: [PATCH] www/nginx-devel: enable third-party lua module back Bump PORTREVISION. --- www/nginx-devel/Makefile | 2 +- www/nginx-devel/Makefile.extmod | 1 + .../files/extra-patch-lua-nginx-module | 167 ++++++++++++++++++ 3 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 www/nginx-devel/files/extra-patch-lua-nginx-module diff --git a/www/nginx-devel/Makefile b/www/nginx-devel/Makefile index 1de332053904d..0d94f81afdbba 100644 --- a/www/nginx-devel/Makefile +++ b/www/nginx-devel/Makefile @@ -2,6 +2,7 @@ PORTNAME?= nginx PORTVERSION= 1.23.0 +PORTREVISION= 1 CATEGORIES= www MASTER_SITES= https://nginx.org/download/ \ LOCAL/osa @@ -252,7 +253,6 @@ NJS_CONFIGURE_ARGS= --no-pcre2 ${PORT_OPTIONS:MHTTP_UPLOAD_PROGRESS} || \ ${PORT_OPTIONS:MHTTP_UPSTREAM_STICKY} || \ ${PORT_OPTIONS:MHTTP_ZIP} || \ - ${PORT_OPTIONS:MLUA} || \ ${PORT_OPTIONS:MNAXSI} || \ ${PORT_OPTIONS:MSRCACHE} || \ ${PORT_OPTIONS:MVOD} diff --git a/www/nginx-devel/Makefile.extmod b/www/nginx-devel/Makefile.extmod index 59e16850f99fa..c8edbf55356bd 100644 --- a/www/nginx-devel/Makefile.extmod +++ b/www/nginx-devel/Makefile.extmod @@ -229,6 +229,7 @@ LUA_CONFIGURE_ENV= LUAJIT_INC=${LOCALBASE}/include/luajit-2.1 \ LUAJIT_LIB=${LOCALBASE}/lib LUA_GH_TUPLE= openresty:lua-nginx-module:v0.10.21:lua LUA_VARS= DSO_EXTMODS+=lua +LUA_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-lua-nginx-module:-p1 LINK_GH_TUPLE= Taymindis:nginx-link-function:3.2.4:link LINK_EXTRA_PATCHES= ${PATCHDIR}/extra-patch-nginx-link-function-config \ diff --git a/www/nginx-devel/files/extra-patch-lua-nginx-module b/www/nginx-devel/files/extra-patch-lua-nginx-module new file mode 100644 index 0000000000000..b2a22d723d1ff --- /dev/null +++ b/www/nginx-devel/files/extra-patch-lua-nginx-module @@ -0,0 +1,167 @@ +From b6d167cf1a93c0c885c28db5a439f2404874cb26 Mon Sep 17 00:00:00 2001 +From: Hiroaki Nakamura +Date: Tue, 28 Jun 2022 14:37:24 +0900 +Subject: [PATCH] bugfix: update handling of multiple headers changed in nginx + 1.23.0 (#2063) + +--- + src/ngx_http_lua_headers_in.c | 46 ++++++++++++++++++++++++ + src/ngx_http_lua_headers_out.c | 64 ++++++++++++++++++++++++++++++++++ + 2 files changed, 110 insertions(+) + +diff --git a/../lua-nginx-module-0.10.21/src/ngx_http_lua_headers_in.c b/src/ngx_http_lua_headers_in.c +index a55d9cac7..440548140 100644 +--- a/../lua-nginx-module-0.10.21/src/ngx_http_lua_headers_in.c ++++ b/../lua-nginx-module-0.10.21/src/ngx_http_lua_headers_in.c +@@ -152,9 +152,15 @@ static ngx_http_lua_set_header_t ngx_http_lua_set_handlers[] = { + ngx_http_set_builtin_header }, + #endif + ++#if defined(nginx_version) && nginx_version >= 1023000 ++ { ngx_string("Cookie"), ++ offsetof(ngx_http_headers_in_t, cookie), ++ ngx_http_set_builtin_multi_header }, ++#else + { ngx_string("Cookie"), + offsetof(ngx_http_headers_in_t, cookies), + ngx_http_set_builtin_multi_header }, ++#endif + + { ngx_null_string, 0, ngx_http_set_header } + }; +@@ -580,6 +586,45 @@ static ngx_int_t + ngx_http_set_builtin_multi_header(ngx_http_request_t *r, + ngx_http_lua_header_val_t *hv, ngx_str_t *value) + { ++#if defined(nginx_version) && nginx_version >= 1023000 ++ ngx_table_elt_t **headers, **ph, *h; ++ int nelts; ++ ++ headers = (ngx_table_elt_t **) ((char *) &r->headers_in + hv->offset); ++ ++ if (!hv->no_override && *headers != NULL) { ++ nelts = 0; ++ for (h = *headers; h; h = h->next) { ++ nelts++; ++ } ++ ++ *headers = NULL; ++ ++ dd("clear multi-value headers: %d", nelts); ++ } ++ ++ if (ngx_http_set_header_helper(r, hv, value, &h) == NGX_ERROR) { ++ return NGX_ERROR; ++ } ++ ++ if (value->len == 0) { ++ return NGX_OK; ++ } ++ ++ dd("new multi-value header: %p", h); ++ ++ if (*headers) { ++ for (ph = headers; *ph; ph = &(*ph)->next) { /* void */ } ++ *ph = h; ++ ++ } else { ++ *headers = h; ++ } ++ ++ h->next = NULL; ++ ++ return NGX_OK; ++#else + ngx_array_t *headers; + ngx_table_elt_t **v, *h; + +@@ -626,6 +671,7 @@ ngx_http_set_builtin_multi_header(ngx_http_request_t *r, + + *v = h; + return NGX_OK; ++#endif + } + + +diff --git a/../lua-nginx-module-0.10.21/src/ngx_http_lua_headers_out.c b/src/ngx_http_lua_headers_out.c +index 6e9f9c19a..571723d9a 100644 +--- a/../lua-nginx-module-0.10.21/src/ngx_http_lua_headers_out.c ++++ b/../lua-nginx-module-0.10.21/src/ngx_http_lua_headers_out.c +@@ -311,6 +311,69 @@ static ngx_int_t + ngx_http_set_builtin_multi_header(ngx_http_request_t *r, + ngx_http_lua_header_val_t *hv, ngx_str_t *value) + { ++#if defined(nginx_version) && nginx_version >= 1023000 ++ ngx_table_elt_t **headers, *h, *ho, **ph; ++ ++ headers = (ngx_table_elt_t **) ((char *) &r->headers_out + hv->offset); ++ ++ if (hv->no_override) { ++ for (h = *headers; h; h = h->next) { ++ if (!h->hash) { ++ h->value = *value; ++ h->hash = hv->hash; ++ return NGX_OK; ++ } ++ } ++ ++ goto create; ++ } ++ ++ /* override old values (if any) */ ++ ++ if (*headers) { ++ for (h = (*headers)->next; h; h = h->next) { ++ h->hash = 0; ++ h->value.len = 0; ++ } ++ ++ h = *headers; ++ ++ h->value = *value; ++ ++ if (value->len == 0) { ++ h->hash = 0; ++ ++ } else { ++ h->hash = hv->hash; ++ } ++ ++ return NGX_OK; ++ } ++ ++create: ++ ++ for (ph = headers; *ph; ph = &(*ph)->next) { /* void */ } ++ ++ ho = ngx_list_push(&r->headers_out.headers); ++ if (ho == NULL) { ++ return NGX_ERROR; ++ } ++ ++ ho->value = *value; ++ ++ if (value->len == 0) { ++ ho->hash = 0; ++ ++ } else { ++ ho->hash = hv->hash; ++ } ++ ++ ho->key = hv->key; ++ ho->next = NULL; ++ *ph = ho; ++ ++ return NGX_OK; ++#else + ngx_array_t *pa; + ngx_table_elt_t *ho, **ph; + ngx_uint_t i; +@@ -384,6 +447,7 @@ ngx_http_set_builtin_multi_header(ngx_http_request_t *r, + *ph = ho; + + return NGX_OK; ++#endif + } + +