Skip to content

Commit ce4276b

Browse files
author
pyama
committed
FIX #524 Support after version 1.25.5
1 parent 35e819b commit ce4276b

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ jobs:
1515
strategy:
1616
matrix:
1717
NGINX_VERSION:
18-
- 1.25.2
19-
- 1.24.0
18+
- 1.27.2
19+
- 1.26.2
2020
BUILD_DYNAMIC_MODULE:
2121
- ""
2222
- "TRUE"

nginx_version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
NGINX_SRC_MAJOR=1
2-
NGINX_SRC_MINOR=25
2+
NGINX_SRC_MINOR=27
33
NGINX_SRC_PATCH=2
44
NGINX_SRC_VER=nginx-${NGINX_SRC_MAJOR}.${NGINX_SRC_MINOR}.${NGINX_SRC_PATCH}

src/stream/ngx_stream_mruby_core.c

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ static mrb_value ngx_stream_mrb_add_listener(mrb_state *mrb, mrb_value self)
5353
#else
5454
ngx_uint_t i;
5555
#endif
56-
ngx_stream_listen_t *ls, *als;
56+
ngx_stream_listen_opt_t *ls, *als;
5757

5858
mrb_get_args(mrb, "H", &listener);
5959
address = mrb_hash_get(mrb, listener, mrb_check_intern_cstr(mrb, "address"));
@@ -76,13 +76,19 @@ static mrb_value ngx_stream_mrb_add_listener(mrb_state *mrb, mrb_value self)
7676

7777
cmcf = ngx_stream_conf_get_module_main_conf(cf, ngx_stream_core_module);
7878

79-
ls = ngx_array_push(&cmcf->listen);
79+
if (cmcf->ports == NULL) {
80+
cmcf->ports = ngx_array_create(cf->pool, 4, sizeof(ngx_stream_listen_opt_t));
81+
if (cmcf->ports == NULL) {
82+
mrb_raise(mrb, E_RUNTIME_ERROR, "Failed to create cmcf->ports array");
83+
}
84+
}
85+
86+
ls = ngx_array_push(cmcf->ports);
8087
if (ls == NULL) {
8188
mrb_raise(mrb, E_RUNTIME_ERROR, "ngx_stream_mrb_add_listener ngx_array_push failed");
8289
}
8390

84-
ngx_memzero(ls, sizeof(ngx_stream_listen_t));
85-
91+
ngx_memzero(ls, sizeof(ngx_stream_listen_opt_t));
8692
#if (nginx_version < 1015010)
8793
ngx_memcpy(&ls->sockaddr.sockaddr, &u.sockaddr, u.socklen);
8894
ls->socklen = u.socklen;
@@ -96,7 +102,6 @@ static mrb_value ngx_stream_mrb_add_listener(mrb_state *mrb, mrb_value self)
96102
#endif
97103
ls->type = SOCK_STREAM;
98104
ls->wildcard = u.wildcard;
99-
ls->ctx = cf->ctx;
100105

101106
#if (NGX_HAVE_INET6)
102107
ls->ipv6only = 1;
@@ -124,24 +129,24 @@ static mrb_value ngx_stream_mrb_add_listener(mrb_state *mrb, mrb_value self)
124129
}
125130
}
126131

127-
als = cmcf->listen.elts;
132+
als = cmcf->ports->elts;
128133

129134
#if (nginx_version > 1015009)
130135
for (n = 0; n < u.naddrs; n++) {
131-
ls[n] = ls[0];
132-
ls[n].sockaddr = u.addrs[n].sockaddr;
133-
ls[n].socklen = u.addrs[n].socklen;
134-
ls[n].addr_text = u.addrs[n].name;
135-
ls[n].wildcard = ngx_inet_wildcard(ls[n].sockaddr);
136-
137-
for (i = 0; i < cmcf->listen.nelts - u.naddrs + n; i++) {
138-
if (ls[n].type != als[i].type) {
139-
continue;
140-
}
141-
142-
if (ngx_cmp_sockaddr(als[i].sockaddr, als[i].socklen, ls[n].sockaddr, ls[n].socklen, 1) != NGX_OK) {
136+
ls[n] = ls[0];
137+
ls[n].sockaddr = u.addrs[n].sockaddr;
138+
ls[n].socklen = u.addrs[n].socklen;
139+
ls[n].addr_text = u.addrs[n].name;
140+
ls[n].wildcard = ngx_inet_wildcard(ls[n].sockaddr);
141+
142+
for (i = 0; i < cmcf->ports->nelts - u.naddrs + n; i++) {
143+
if (ls[n].type != als[i].type) {
143144
continue;
144-
}
145+
}
146+
147+
if (ngx_cmp_sockaddr(als[i].sockaddr, als[i].socklen, ls[n].sockaddr, ls[n].socklen, 1) != NGX_OK) {
148+
continue;
149+
}
145150

146151
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "duplicate \"%V\" address and port pair", &ls[n].addr_text);
147152
mrb_raise(mrb, E_RUNTIME_ERROR, "duplicate address and port pair");

0 commit comments

Comments
 (0)