Skip to content

Commit

Permalink
www/nginx-devel: enable third-party lua module back
Browse files Browse the repository at this point in the history
Bump PORTREVISION.
  • Loading branch information
osokin committed Jul 10, 2022
1 parent 0ea4db4 commit 9274f29
Show file tree
Hide file tree
Showing 3 changed files with 169 additions and 1 deletion.
2 changes: 1 addition & 1 deletion www/nginx-devel/Makefile
Expand Up @@ -2,6 +2,7 @@

PORTNAME?= nginx
PORTVERSION= 1.23.0
PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= https://nginx.org/download/ \
LOCAL/osa
Expand Down Expand Up @@ -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}
Expand Down
1 change: 1 addition & 0 deletions www/nginx-devel/Makefile.extmod
Expand Up @@ -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 \
Expand Down
167 changes: 167 additions & 0 deletions 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 <hnakamur@gmail.com>
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
}


0 comments on commit 9274f29

Please sign in to comment.