Skip to content

Commit 5abc7b6

Browse files
committed
bugfix: fixed compatibility issues with other nginx modules loaded as "dynamic modules" in NGINX 1.9.11+.
1 parent 64866bc commit 5abc7b6

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

src/ngx_http_lua_initworkerby.c

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ ngx_http_lua_init_worker(ngx_cycle_t *cycle)
2626
ngx_uint_t i;
2727
ngx_conf_t conf;
2828
ngx_cycle_t *fake_cycle;
29+
ngx_module_t **modules;
2930
ngx_open_file_t *file, *ofile;
3031
ngx_list_part_t *part;
3132
ngx_connection_t *c = NULL;
@@ -154,20 +155,26 @@ ngx_http_lua_init_worker(ngx_cycle_t *cycle)
154155
return NGX_ERROR;
155156
}
156157

157-
for (i = 0; ngx_modules[i]; i++) {
158-
if (ngx_modules[i]->type != NGX_HTTP_MODULE) {
158+
#if defined(nginx_version) && nginx_version >= 1009011
159+
modules = cycle->modules;
160+
#else
161+
modules = ngx_modules;
162+
#endif
163+
164+
for (i = 0; modules[i]; i++) {
165+
if (modules[i]->type != NGX_HTTP_MODULE) {
159166
continue;
160167
}
161168

162-
module = ngx_modules[i]->ctx;
169+
module = modules[i]->ctx;
163170

164171
if (module->create_srv_conf) {
165172
cur = module->create_srv_conf(&conf);
166173
if (cur == NULL) {
167174
return NGX_ERROR;
168175
}
169176

170-
http_ctx.srv_conf[ngx_modules[i]->ctx_index] = cur;
177+
http_ctx.srv_conf[modules[i]->ctx_index] = cur;
171178

172179
if (module->merge_srv_conf) {
173180
prev = module->create_srv_conf(&conf);
@@ -188,7 +195,7 @@ ngx_http_lua_init_worker(ngx_cycle_t *cycle)
188195
return NGX_ERROR;
189196
}
190197

191-
http_ctx.loc_conf[ngx_modules[i]->ctx_index] = cur;
198+
http_ctx.loc_conf[modules[i]->ctx_index] = cur;
192199

193200
if (module->merge_loc_conf) {
194201
prev = module->create_loc_conf(&conf);

src/ngx_http_lua_ndk.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,22 @@ ngx_http_lookup_ndk_set_var_directive(u_char *name,
116116
ndk_set_var_t *filter;
117117
ngx_uint_t i;
118118
ngx_module_t *module;
119+
ngx_module_t **modules;
119120
ngx_command_t *cmd;
120121

121-
for (i = 0; ngx_modules[i]; i++) {
122-
module = ngx_modules[i];
122+
#if defined(nginx_version) && nginx_version >= 1009011
123+
modules = ngx_cycle->modules;
124+
#else
125+
modules = ngx_modules;
126+
#endif
127+
128+
for (i = 0; modules[i]; i++) {
129+
module = modules[i];
123130
if (module->type != NGX_HTTP_MODULE) {
124131
continue;
125132
}
126133

127-
cmd = ngx_modules[i]->commands;
134+
cmd = modules[i]->commands;
128135
if (cmd == NULL) {
129136
continue;
130137
}

0 commit comments

Comments
 (0)