Skip to content

Commit a933495

Browse files
committed
merged exec pull feature
2 parents 935156c + a6913ea commit a933495

6 files changed

+955
-226
lines changed

config

-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ CORE_MODULES="$CORE_MODULES
1515
ngx_rtmp_relay_module \
1616
ngx_rtmp_exec_module \
1717
ngx_rtmp_auto_push_module \
18-
ngx_rtmp_enotify_module \
1918
ngx_rtmp_notify_module \
2019
ngx_rtmp_log_module \
2120
ngx_rtmp_limit_module \
@@ -73,7 +72,6 @@ NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
7372
$ngx_addon_dir/ngx_rtmp_bandwidth.c \
7473
$ngx_addon_dir/ngx_rtmp_exec_module.c \
7574
$ngx_addon_dir/ngx_rtmp_auto_push_module.c \
76-
$ngx_addon_dir/ngx_rtmp_enotify_module.c \
7775
$ngx_addon_dir/ngx_rtmp_notify_module.c \
7876
$ngx_addon_dir/ngx_rtmp_log_module.c \
7977
$ngx_addon_dir/ngx_rtmp_limit_module.c \

ngx_rtmp_enotify_module.c

+10-7
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,11 @@ ngx_module_t ngx_rtmp_enotify_module = {
137137

138138

139139
static void
140-
ngx_rtmp_enotify_eval_astr(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
141-
ngx_str_t *ret)
140+
ngx_rtmp_enotify_eval_astr(void *sctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
142141
{
143-
ngx_rtmp_enotify_ctx_t *ctx;
142+
ngx_rtmp_session_t *s = sctx;
143+
144+
ngx_rtmp_enotify_ctx_t *ctx;
144145

145146
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_enotify_module);
146147
if (ctx == NULL) {
@@ -154,10 +155,11 @@ ngx_rtmp_enotify_eval_astr(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
154155

155156

156157
static void
157-
ngx_rtmp_enotify_eval_str(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
158-
ngx_str_t *ret)
158+
ngx_rtmp_enotify_eval_str(void *sctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
159159
{
160-
ngx_rtmp_enotify_ctx_t *ctx;
160+
ngx_rtmp_session_t *s = sctx;
161+
162+
ngx_rtmp_enotify_ctx_t *ctx;
161163

162164
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_enotify_module);
163165
if (ctx == NULL) {
@@ -284,7 +286,8 @@ ngx_rtmp_enotify_exec(ngx_rtmp_session_t *s, ngx_rtmp_enotify_conf_t *ec)
284286

285287
for (n = 0; n < ec->args.nelts; ++n, ++arg_in) {
286288

287-
ngx_rtmp_eval(s, arg_in, ngx_rtmp_enotify_eval_p, &a);
289+
ngx_rtmp_eval(s, arg_in, ngx_rtmp_enotify_eval_p, &a,
290+
s->connection->log);
288291

289292
if (ngx_rtmp_eval_streams(&a) != NGX_DONE) {
290293
continue;

ngx_rtmp_eval.c

+20-22
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@
1313

1414

1515
static void
16-
ngx_rtmp_eval_session_str(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
17-
ngx_str_t *ret)
16+
ngx_rtmp_eval_session_str(void *ctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
1817
{
19-
*ret = *(ngx_str_t *) ((u_char *) s + e->offset);
18+
*ret = *(ngx_str_t *) ((u_char *) ctx + e->offset);
2019
}
2120

2221

2322
static void
24-
ngx_rtmp_eval_connection_str(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
25-
ngx_str_t *ret)
23+
ngx_rtmp_eval_connection_str(void *ctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
2624
{
25+
ngx_rtmp_session_t *s = ctx;
26+
2727
*ret = *(ngx_str_t *) ((u_char *) s->connection + e->offset);
2828
}
2929

@@ -59,15 +59,14 @@ ngx_rtmp_eval_t ngx_rtmp_eval_session[] = {
5959

6060

6161
static void
62-
ngx_rtmp_eval_append(ngx_rtmp_session_t *s, ngx_buf_t *b,
63-
void *data, size_t len)
62+
ngx_rtmp_eval_append(ngx_buf_t *b, void *data, size_t len, ngx_log_t *log)
6463
{
6564
size_t buf_len;
6665

6766
if (b->last + len > b->end) {
6867
buf_len = 2 * (b->last - b->pos) + len;
6968

70-
b->start = ngx_palloc(s->connection->pool, buf_len);
69+
b->start = ngx_alloc(buf_len, log);
7170
if (b->start == NULL) {
7271
return;
7372
}
@@ -82,8 +81,8 @@ ngx_rtmp_eval_append(ngx_rtmp_session_t *s, ngx_buf_t *b,
8281

8382

8483
static void
85-
ngx_rtmp_eval_append_var(ngx_rtmp_session_t *s, ngx_buf_t *b,
86-
ngx_rtmp_eval_t **e, ngx_str_t *name)
84+
ngx_rtmp_eval_append_var(void *ctx, ngx_buf_t *b, ngx_rtmp_eval_t **e,
85+
ngx_str_t *name, ngx_log_t *log)
8786
{
8887
ngx_uint_t k;
8988
ngx_str_t v;
@@ -92,19 +91,19 @@ ngx_rtmp_eval_append_var(ngx_rtmp_session_t *s, ngx_buf_t *b,
9291
for (; *e; ++e) {
9392
for (k = 0, ee = *e; ee->handler; ++k, ++ee) {
9493
if (ee->name.len == name->len &&
95-
ngx_memcmp(ee->name.data, name->data, name->len) == 0)
94+
ngx_memcmp(ee->name.data, name->data, name->len) == 0)
9695
{
97-
ee->handler(s, ee, &v);
98-
ngx_rtmp_eval_append(s, b, v.data, v.len);
96+
ee->handler(ctx, ee, &v);
97+
ngx_rtmp_eval_append(b, v.data, v.len, log);
9998
}
10099
}
101100
}
102101
}
103102

104103

105104
ngx_int_t
106-
ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
107-
ngx_str_t *out)
105+
ngx_rtmp_eval(void *ctx, ngx_str_t *in, ngx_rtmp_eval_t **e, ngx_str_t *out,
106+
ngx_log_t *log)
108107
{
109108
u_char c, *p;
110109
ngx_str_t name;
@@ -118,8 +117,7 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
118117
SNAME
119118
} state = NORMAL;
120119

121-
b.pos = b.last = b.start = ngx_palloc(s->connection->pool,
122-
NGX_RTMP_EVAL_BUFLEN);
120+
b.pos = b.last = b.start = ngx_alloc(NGX_RTMP_EVAL_BUFLEN, log);
123121
if (b.pos == NULL) {
124122
return NGX_ERROR;
125123
}
@@ -138,7 +136,7 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
138136
}
139137

140138
name.len = p - name.data;
141-
ngx_rtmp_eval_append_var(s, &b, e, &name);
139+
ngx_rtmp_eval_append_var(ctx, &b, e, &name, log);
142140

143141
state = NORMAL;
144142

@@ -155,7 +153,7 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
155153
}
156154

157155
name.len = p - name.data;
158-
ngx_rtmp_eval_append_var(s, &b, e, &name);
156+
ngx_rtmp_eval_append_var(ctx, &b, e, &name, log);
159157

160158
case NORMAL:
161159
switch (c) {
@@ -169,7 +167,7 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
169167
}
170168

171169
case ESCAPE:
172-
ngx_rtmp_eval_append(s, &b, &c, 1);
170+
ngx_rtmp_eval_append(&b, &c, 1, log);
173171
state = NORMAL;
174172
break;
175173

@@ -179,11 +177,11 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
179177
if (state == NAME) {
180178
p = &in->data[n];
181179
name.len = p - name.data;
182-
ngx_rtmp_eval_append_var(s, &b, e, &name);
180+
ngx_rtmp_eval_append_var(ctx, &b, e, &name, log);
183181
}
184182

185183
c = 0;
186-
ngx_rtmp_eval_append(s, &b, &c, 1);
184+
ngx_rtmp_eval_append(&b, &c, 1, log);
187185

188186
out->data = b.pos;
189187
out->len = b.last - b.pos - 1;

ngx_rtmp_eval.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
typedef struct ngx_rtmp_eval_s ngx_rtmp_eval_t;
1717

1818

19-
typedef void (* ngx_rtmp_eval_pt)(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
19+
typedef void (* ngx_rtmp_eval_pt)(void *ctx, ngx_rtmp_eval_t *e,
2020
ngx_str_t *ret);
2121

2222

@@ -34,8 +34,8 @@ struct ngx_rtmp_eval_s {
3434
extern ngx_rtmp_eval_t ngx_rtmp_eval_session[];
3535

3636

37-
ngx_int_t ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in,
38-
ngx_rtmp_eval_t **e, ngx_str_t *out);
37+
ngx_int_t ngx_rtmp_eval(void *ctx, ngx_str_t *in, ngx_rtmp_eval_t **e,
38+
ngx_str_t *out, ngx_log_t *log);
3939

4040

4141
ngx_int_t ngx_rtmp_eval_streams(ngx_str_t *in);

0 commit comments

Comments
 (0)