Skip to content

Commit c4f5349

Browse files
author
zhuo.zhang
committed
bugfix: resolve subrequest cycle issue when Lua code cache is disabled
1 parent 9d930a7 commit c4f5349

File tree

7 files changed

+106
-0
lines changed

7 files changed

+106
-0
lines changed

src/ngx_http_lua_accessby.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ ngx_http_lua_access_handler_inline(ngx_http_request_t *r)
173173

174174
L = ngx_http_lua_get_lua_vm(r, NULL);
175175

176+
if (!llcf->enable_code_cache) {
177+
llcf->access_src_ref = LUA_REFNIL;
178+
}
179+
176180
/* load Lua inline script (w/ cache) sp = 1 */
177181
rc = ngx_http_lua_cache_loadbuffer(r->connection->log, L,
178182
llcf->access_src.value.data,
@@ -214,6 +218,10 @@ ngx_http_lua_access_handler_file(ngx_http_request_t *r)
214218

215219
L = ngx_http_lua_get_lua_vm(r, NULL);
216220

221+
if (!llcf->enable_code_cache) {
222+
llcf->access_src_ref = LUA_REFNIL;
223+
}
224+
217225
/* load Lua script file (w/ cache) sp = 1 */
218226
rc = ngx_http_lua_cache_loadfile(r->connection->log, L, script_path,
219227
&llcf->access_src_ref,

src/ngx_http_lua_bodyfilterby.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,10 @@ ngx_http_lua_body_filter_inline(ngx_http_request_t *r, ngx_chain_t *in)
155155

156156
L = ngx_http_lua_get_lua_vm(r, NULL);
157157

158+
if (!llcf->enable_code_cache) {
159+
llcf->body_filter_src_ref = LUA_REFNIL;
160+
}
161+
158162
/* load Lua inline script (w/ cache) sp = 1 */
159163
rc = ngx_http_lua_cache_loadbuffer(r->connection->log, L,
160164
llcf->body_filter_src.value.data,
@@ -206,6 +210,10 @@ ngx_http_lua_body_filter_file(ngx_http_request_t *r, ngx_chain_t *in)
206210

207211
L = ngx_http_lua_get_lua_vm(r, NULL);
208212

213+
if (!llcf->enable_code_cache) {
214+
llcf->body_filter_src_ref = LUA_REFNIL;
215+
}
216+
209217
/* load Lua script file (w/ cache) sp = 1 */
210218
rc = ngx_http_lua_cache_loadfile(r->connection->log, L, script_path,
211219
&llcf->body_filter_src_ref,

src/ngx_http_lua_contentby.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,10 @@ ngx_http_lua_content_handler_file(ngx_http_request_t *r)
267267

268268
L = ngx_http_lua_get_lua_vm(r, NULL);
269269

270+
if (!llcf->enable_code_cache) {
271+
llcf->content_src_ref = LUA_REFNIL;
272+
}
273+
270274
/* load Lua script file (w/ cache) sp = 1 */
271275
rc = ngx_http_lua_cache_loadfile(r->connection->log, L, script_path,
272276
&llcf->content_src_ref,
@@ -297,6 +301,10 @@ ngx_http_lua_content_handler_inline(ngx_http_request_t *r)
297301

298302
L = ngx_http_lua_get_lua_vm(r, NULL);
299303

304+
if (!llcf->enable_code_cache) {
305+
llcf->content_src_ref = LUA_REFNIL;
306+
}
307+
300308
/* load Lua inline script (w/ cache) sp = 1 */
301309
rc = ngx_http_lua_cache_loadbuffer(r->connection->log, L,
302310
llcf->content_src.value.data,

src/ngx_http_lua_headerfilterby.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,10 @@ ngx_http_lua_header_filter_inline(ngx_http_request_t *r)
165165

166166
L = ngx_http_lua_get_lua_vm(r, NULL);
167167

168+
if (!llcf->enable_code_cache) {
169+
llcf->header_filter_src_ref = LUA_REFNIL;
170+
}
171+
168172
/* load Lua inline script (w/ cache) sp = 1 */
169173
rc = ngx_http_lua_cache_loadbuffer(r->connection->log, L,
170174
llcf->header_filter_src.value.data,
@@ -210,6 +214,10 @@ ngx_http_lua_header_filter_file(ngx_http_request_t *r)
210214

211215
L = ngx_http_lua_get_lua_vm(r, NULL);
212216

217+
if (!llcf->enable_code_cache) {
218+
llcf->header_filter_src_ref = LUA_REFNIL;
219+
}
220+
213221
/* load Lua script file (w/ cache) sp = 1 */
214222
rc = ngx_http_lua_cache_loadfile(r->connection->log, L, script_path,
215223
&llcf->header_filter_src_ref,

src/ngx_http_lua_logby.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ ngx_http_lua_log_handler_inline(ngx_http_request_t *r)
149149

150150
L = ngx_http_lua_get_lua_vm(r, NULL);
151151

152+
if (!llcf->enable_code_cache) {
153+
llcf->log_src_ref = LUA_REFNIL;
154+
}
155+
152156
/* load Lua inline script (w/ cache) sp = 1 */
153157
rc = ngx_http_lua_cache_loadbuffer(r->connection->log, L,
154158
llcf->log_src.value.data,
@@ -188,6 +192,10 @@ ngx_http_lua_log_handler_file(ngx_http_request_t *r)
188192

189193
L = ngx_http_lua_get_lua_vm(r, NULL);
190194

195+
if (!llcf->enable_code_cache) {
196+
llcf->log_src_ref = LUA_REFNIL;
197+
}
198+
191199
/* load Lua script file (w/ cache) sp = 1 */
192200
rc = ngx_http_lua_cache_loadfile(r->connection->log, L, script_path,
193201
&llcf->log_src_ref,

src/ngx_http_lua_rewriteby.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ ngx_http_lua_rewrite_handler_inline(ngx_http_request_t *r)
177177
llcf = ngx_http_get_module_loc_conf(r, ngx_http_lua_module);
178178
L = ngx_http_lua_get_lua_vm(r, NULL);
179179

180+
if (!llcf->enable_code_cache) {
181+
llcf->rewrite_src_ref = LUA_REFNIL;
182+
}
183+
180184
/* load Lua inline script (w/ cache) sp = 1 */
181185
rc = ngx_http_lua_cache_loadbuffer(r->connection->log, L,
182186
llcf->rewrite_src.value.data,
@@ -217,6 +221,10 @@ ngx_http_lua_rewrite_handler_file(ngx_http_request_t *r)
217221

218222
L = ngx_http_lua_get_lua_vm(r, NULL);
219223

224+
if (!llcf->enable_code_cache) {
225+
llcf->rewrite_src_ref = LUA_REFNIL;
226+
}
227+
220228
/* load Lua script file (w/ cache) sp = 1 */
221229
rc = ngx_http_lua_cache_loadfile(r->connection->log, L, script_path,
222230
&llcf->rewrite_src_ref,

t/014-bugs.t

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,3 +1397,61 @@ If-Match: 1
13971397
--- error_code: 200
13981398
--- response_body eval
13991399
qr/\Ahello\z/
1400+
1401+
1402+
1403+
=== TEST 51: subrequest cycle problem in rewrite_by_lua_file
1404+
--- http_config
1405+
lua_code_cache off;
1406+
--- config
1407+
set $main "foo";
1408+
set $sub "bar";
1409+
location = /main {
1410+
rewrite_by_lua_file html/main.lua;
1411+
echo $main;
1412+
}
1413+
1414+
location = /sub {
1415+
rewrite_by_lua_file html/sub.lua;
1416+
echo $sub;
1417+
}
1418+
--- user_files
1419+
>>> main.lua
1420+
local res = ngx.location.capture("/sub")
1421+
ngx.var.main = "main " .. res.body
1422+
>>> sub.lua
1423+
ngx.var.sub = "sub"
1424+
1425+
--- pipelined_requests eval
1426+
["GET /sub", "GET /main"]
1427+
--- response_body eval
1428+
["sub\n", "main sub\n\n"]
1429+
--- no_error_log
1430+
[error]
1431+
1432+
1433+
1434+
=== TEST 52: subrequest cycle problem in content_by_lua_file
1435+
--- http_config
1436+
lua_code_cache off;
1437+
--- config
1438+
location = /main {
1439+
content_by_lua_file html/main.lua;
1440+
}
1441+
1442+
location = /sub {
1443+
content_by_lua_file html/sub.lua;
1444+
}
1445+
--- user_files
1446+
>>> main.lua
1447+
local res = ngx.location.capture("/sub")
1448+
ngx.print("main " .. res.body)
1449+
>>> sub.lua
1450+
ngx.print("sub")
1451+
1452+
--- pipelined_requests eval
1453+
["GET /sub", "GET /main"]
1454+
--- response_body eval
1455+
["sub", "main sub"]
1456+
--- no_error_log
1457+
[error]

0 commit comments

Comments
 (0)