From 426fad198c1e4c2dda4fefe8dc1c7ad09c482338 Mon Sep 17 00:00:00 2001 From: Lubos Uhliarik Date: Jul 09 2020 22:47:52 +0000 Subject: fix macro in mod_lua for lua 4.5 --- diff --git a/httpd-2.4.43-lua-resume.patch b/httpd-2.4.43-lua-resume.patch new file mode 100644 index 0000000..c954338 --- /dev/null +++ b/httpd-2.4.43-lua-resume.patch @@ -0,0 +1,95 @@ +diff --git a/modules/lua/mod_lua.c b/modules/lua/mod_lua.c +index 05f1e44..be3bedf 100644 +--- a/modules/lua/mod_lua.c ++++ b/modules/lua/mod_lua.c +@@ -342,7 +342,7 @@ static apr_status_t lua_setup_filter_ctx(ap_filter_t* f, request_rec* r, lua_fil + { + apr_pool_t *pool; + ap_lua_vm_spec *spec; +- int n, rc; ++ int n, rc, nres; + lua_State *L; + lua_filter_ctx *ctx; + ap_lua_server_cfg *server_cfg = ap_get_module_config(r->server->module_config, +@@ -410,7 +410,7 @@ static apr_status_t lua_setup_filter_ctx(ap_filter_t* f, request_rec* r, lua_fil + /* If a Lua filter is interested in filtering a request, it must first do a yield, + * otherwise we'll assume that it's not interested and pretend we didn't find it. + */ +- rc = lua_resume(L, 1); ++ rc = lua_resume(L, 1, &nres); + if (rc == LUA_YIELD) { + if (f->frec->providers == NULL) { + /* Not wired by mod_filter */ +@@ -432,7 +432,7 @@ static apr_status_t lua_setup_filter_ctx(ap_filter_t* f, request_rec* r, lua_fil + static apr_status_t lua_output_filter_handle(ap_filter_t *f, apr_bucket_brigade *pbbIn) + { + request_rec *r = f->r; +- int rc; ++ int rc, nres; + lua_State *L; + lua_filter_ctx* ctx; + conn_rec *c = r->connection; +@@ -492,7 +492,7 @@ static apr_status_t lua_output_filter_handle(ap_filter_t *f, apr_bucket_brigade + lua_setglobal(L, "bucket"); + + /* If Lua yielded, it means we have something to pass on */ +- if (lua_resume(L, 0) == LUA_YIELD) { ++ if (lua_resume(L, 0, &nres) == LUA_YIELD) { + size_t olen; + const char* output = lua_tolstring(L, 1, &olen); + if (olen > 0) { +@@ -524,7 +524,7 @@ static apr_status_t lua_output_filter_handle(ap_filter_t *f, apr_bucket_brigade + apr_bucket *pbktEOS; + lua_pushnil(L); + lua_setglobal(L, "bucket"); +- if (lua_resume(L, 0) == LUA_YIELD) { ++ if (lua_resume(L, 0, &nres) == LUA_YIELD) { + apr_bucket *pbktOut; + size_t olen; + const char* output = lua_tolstring(L, 1, &olen); +@@ -558,7 +558,7 @@ static apr_status_t lua_input_filter_handle(ap_filter_t *f, + apr_off_t nBytes) + { + request_rec *r = f->r; +- int rc, lastCall = 0; ++ int rc, lastCall = 0, nres; + lua_State *L; + lua_filter_ctx* ctx; + conn_rec *c = r->connection; +@@ -621,7 +621,7 @@ static apr_status_t lua_input_filter_handle(ap_filter_t *f, + lua_setglobal(L, "bucket"); + + /* If Lua yielded, it means we have something to pass on */ +- if (lua_resume(L, 0) == LUA_YIELD) { ++ if (lua_resume(L, 0, &nres) == LUA_YIELD) { + size_t olen; + const char* output = lua_tolstring(L, 1, &olen); + pbktOut = apr_bucket_heap_create(output, olen, 0, c->bucket_alloc); +@@ -643,7 +643,7 @@ static apr_status_t lua_input_filter_handle(ap_filter_t *f, + apr_bucket *pbktEOS = apr_bucket_eos_create(c->bucket_alloc); + lua_pushnil(L); + lua_setglobal(L, "bucket"); +- if (lua_resume(L, 0) == LUA_YIELD) { ++ if (lua_resume(L, 0, &nres) == LUA_YIELD) { + apr_bucket *pbktOut; + size_t olen; + const char* output = lua_tolstring(L, 1, &olen); +diff --git a/modules/lua/mod_lua.h b/modules/lua/mod_lua.h +index 0e49cdc..8921b87 100644 +--- a/modules/lua/mod_lua.h ++++ b/modules/lua/mod_lua.h +@@ -48,7 +48,13 @@ + #if LUA_VERSION_NUM > 501 + /* Load mode for lua_load() */ + #define lua_load(a,b,c,d) lua_load(a,b,c,d,NULL) +-#define lua_resume(a,b) lua_resume(a, NULL, b) ++ ++#if LUA_VERSION_NUM > 503 ++#define lua_resume(a,b,c) lua_resume(a, NULL, b, c) ++#else ++#define lua_resume(a,b,c) lua_resume(a, NULL, b) ++#endif ++ + #define luaL_setfuncs_compat(a,b) luaL_setfuncs(a,b,0) + #else + #define lua_rawlen(L,i) lua_objlen(L, (i)) diff --git a/httpd.spec b/httpd.spec index 3b80a87..6afff49 100644 --- a/httpd.spec +++ b/httpd.spec @@ -13,7 +13,7 @@ Summary: Apache HTTP Server Name: httpd Version: 2.4.43 -Release: 5%{?dist} +Release: 6%{?dist} URL: https://httpd.apache.org/ Source0: https://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2 Source1: https://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2.asc @@ -83,6 +83,7 @@ Patch40: httpd-2.4.43-r1861269.patch Patch41: httpd-2.4.43-r1861793+.patch Patch42: httpd-2.4.43-r1828172+.patch Patch43: httpd-2.4.43-sslcoalesce.patch +Patch44: httpd-2.4.43-lua-resume.patch # Bug fixes # https://bugzilla.redhat.com/show_bug.cgi?id=1397243 @@ -226,6 +227,7 @@ interface for storing and accessing per-user session data. %patch41 -p1 -b .r1861793+ %patch42 -p1 -b .r1828172+ %patch43 -p1 -b .sslcoalesce +%patch44 -p1 -b .luaresume %patch60 -p1 -b .enable-sslv3 %patch62 -p1 -b .r1870095 @@ -753,6 +755,9 @@ exit $rv %{_rpmconfigdir}/macros.d/macros.httpd %changelog +* Thu Jul 09 2020 Lubos Uhliarik - 2.4.43-6 +- fix macro in mod_lua for lua 4.5 + * Thu Jul 09 2020 Lubos Uhliarik - 2.4.43-5 - Remove %ghosted /etc/sysconfig/httpd file (#1850082)