mirror of
https://github.com/zotanmew/nginx-rtmp-module.git
synced 2024-04-28 02:33:46 +02:00
merged exec pull feature
This commit is contained in:
commit
a933495bf1
2
config
2
config
|
@ -15,7 +15,6 @@ CORE_MODULES="$CORE_MODULES
|
||||||
ngx_rtmp_relay_module \
|
ngx_rtmp_relay_module \
|
||||||
ngx_rtmp_exec_module \
|
ngx_rtmp_exec_module \
|
||||||
ngx_rtmp_auto_push_module \
|
ngx_rtmp_auto_push_module \
|
||||||
ngx_rtmp_enotify_module \
|
|
||||||
ngx_rtmp_notify_module \
|
ngx_rtmp_notify_module \
|
||||||
ngx_rtmp_log_module \
|
ngx_rtmp_log_module \
|
||||||
ngx_rtmp_limit_module \
|
ngx_rtmp_limit_module \
|
||||||
|
@ -73,7 +72,6 @@ NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
|
||||||
$ngx_addon_dir/ngx_rtmp_bandwidth.c \
|
$ngx_addon_dir/ngx_rtmp_bandwidth.c \
|
||||||
$ngx_addon_dir/ngx_rtmp_exec_module.c \
|
$ngx_addon_dir/ngx_rtmp_exec_module.c \
|
||||||
$ngx_addon_dir/ngx_rtmp_auto_push_module.c \
|
$ngx_addon_dir/ngx_rtmp_auto_push_module.c \
|
||||||
$ngx_addon_dir/ngx_rtmp_enotify_module.c \
|
|
||||||
$ngx_addon_dir/ngx_rtmp_notify_module.c \
|
$ngx_addon_dir/ngx_rtmp_notify_module.c \
|
||||||
$ngx_addon_dir/ngx_rtmp_log_module.c \
|
$ngx_addon_dir/ngx_rtmp_log_module.c \
|
||||||
$ngx_addon_dir/ngx_rtmp_limit_module.c \
|
$ngx_addon_dir/ngx_rtmp_limit_module.c \
|
||||||
|
|
|
@ -137,10 +137,11 @@ ngx_module_t ngx_rtmp_enotify_module = {
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ngx_rtmp_enotify_eval_astr(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
|
ngx_rtmp_enotify_eval_astr(void *sctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
|
||||||
ngx_str_t *ret)
|
|
||||||
{
|
{
|
||||||
ngx_rtmp_enotify_ctx_t *ctx;
|
ngx_rtmp_session_t *s = sctx;
|
||||||
|
|
||||||
|
ngx_rtmp_enotify_ctx_t *ctx;
|
||||||
|
|
||||||
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_enotify_module);
|
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_enotify_module);
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
|
@ -154,10 +155,11 @@ ngx_rtmp_enotify_eval_astr(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ngx_rtmp_enotify_eval_str(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
|
ngx_rtmp_enotify_eval_str(void *sctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
|
||||||
ngx_str_t *ret)
|
|
||||||
{
|
{
|
||||||
ngx_rtmp_enotify_ctx_t *ctx;
|
ngx_rtmp_session_t *s = sctx;
|
||||||
|
|
||||||
|
ngx_rtmp_enotify_ctx_t *ctx;
|
||||||
|
|
||||||
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_enotify_module);
|
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_enotify_module);
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
|
@ -284,7 +286,8 @@ ngx_rtmp_enotify_exec(ngx_rtmp_session_t *s, ngx_rtmp_enotify_conf_t *ec)
|
||||||
|
|
||||||
for (n = 0; n < ec->args.nelts; ++n, ++arg_in) {
|
for (n = 0; n < ec->args.nelts; ++n, ++arg_in) {
|
||||||
|
|
||||||
ngx_rtmp_eval(s, arg_in, ngx_rtmp_enotify_eval_p, &a);
|
ngx_rtmp_eval(s, arg_in, ngx_rtmp_enotify_eval_p, &a,
|
||||||
|
s->connection->log);
|
||||||
|
|
||||||
if (ngx_rtmp_eval_streams(&a) != NGX_DONE) {
|
if (ngx_rtmp_eval_streams(&a) != NGX_DONE) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -13,17 +13,17 @@
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ngx_rtmp_eval_session_str(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
|
ngx_rtmp_eval_session_str(void *ctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
|
||||||
ngx_str_t *ret)
|
|
||||||
{
|
{
|
||||||
*ret = *(ngx_str_t *) ((u_char *) s + e->offset);
|
*ret = *(ngx_str_t *) ((u_char *) ctx + e->offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ngx_rtmp_eval_connection_str(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
|
ngx_rtmp_eval_connection_str(void *ctx, ngx_rtmp_eval_t *e, ngx_str_t *ret)
|
||||||
ngx_str_t *ret)
|
|
||||||
{
|
{
|
||||||
|
ngx_rtmp_session_t *s = ctx;
|
||||||
|
|
||||||
*ret = *(ngx_str_t *) ((u_char *) s->connection + e->offset);
|
*ret = *(ngx_str_t *) ((u_char *) s->connection + e->offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,15 +59,14 @@ ngx_rtmp_eval_t ngx_rtmp_eval_session[] = {
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ngx_rtmp_eval_append(ngx_rtmp_session_t *s, ngx_buf_t *b,
|
ngx_rtmp_eval_append(ngx_buf_t *b, void *data, size_t len, ngx_log_t *log)
|
||||||
void *data, size_t len)
|
|
||||||
{
|
{
|
||||||
size_t buf_len;
|
size_t buf_len;
|
||||||
|
|
||||||
if (b->last + len > b->end) {
|
if (b->last + len > b->end) {
|
||||||
buf_len = 2 * (b->last - b->pos) + len;
|
buf_len = 2 * (b->last - b->pos) + len;
|
||||||
|
|
||||||
b->start = ngx_palloc(s->connection->pool, buf_len);
|
b->start = ngx_alloc(buf_len, log);
|
||||||
if (b->start == NULL) {
|
if (b->start == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -82,8 +81,8 @@ ngx_rtmp_eval_append(ngx_rtmp_session_t *s, ngx_buf_t *b,
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ngx_rtmp_eval_append_var(ngx_rtmp_session_t *s, ngx_buf_t *b,
|
ngx_rtmp_eval_append_var(void *ctx, ngx_buf_t *b, ngx_rtmp_eval_t **e,
|
||||||
ngx_rtmp_eval_t **e, ngx_str_t *name)
|
ngx_str_t *name, ngx_log_t *log)
|
||||||
{
|
{
|
||||||
ngx_uint_t k;
|
ngx_uint_t k;
|
||||||
ngx_str_t v;
|
ngx_str_t v;
|
||||||
|
@ -92,10 +91,10 @@ ngx_rtmp_eval_append_var(ngx_rtmp_session_t *s, ngx_buf_t *b,
|
||||||
for (; *e; ++e) {
|
for (; *e; ++e) {
|
||||||
for (k = 0, ee = *e; ee->handler; ++k, ++ee) {
|
for (k = 0, ee = *e; ee->handler; ++k, ++ee) {
|
||||||
if (ee->name.len == name->len &&
|
if (ee->name.len == name->len &&
|
||||||
ngx_memcmp(ee->name.data, name->data, name->len) == 0)
|
ngx_memcmp(ee->name.data, name->data, name->len) == 0)
|
||||||
{
|
{
|
||||||
ee->handler(s, ee, &v);
|
ee->handler(ctx, ee, &v);
|
||||||
ngx_rtmp_eval_append(s, b, v.data, v.len);
|
ngx_rtmp_eval_append(b, v.data, v.len, log);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,8 +102,8 @@ ngx_rtmp_eval_append_var(ngx_rtmp_session_t *s, ngx_buf_t *b,
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t
|
ngx_int_t
|
||||||
ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
|
ngx_rtmp_eval(void *ctx, ngx_str_t *in, ngx_rtmp_eval_t **e, ngx_str_t *out,
|
||||||
ngx_str_t *out)
|
ngx_log_t *log)
|
||||||
{
|
{
|
||||||
u_char c, *p;
|
u_char c, *p;
|
||||||
ngx_str_t name;
|
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,
|
||||||
SNAME
|
SNAME
|
||||||
} state = NORMAL;
|
} state = NORMAL;
|
||||||
|
|
||||||
b.pos = b.last = b.start = ngx_palloc(s->connection->pool,
|
b.pos = b.last = b.start = ngx_alloc(NGX_RTMP_EVAL_BUFLEN, log);
|
||||||
NGX_RTMP_EVAL_BUFLEN);
|
|
||||||
if (b.pos == NULL) {
|
if (b.pos == NULL) {
|
||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -138,7 +136,7 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
|
||||||
}
|
}
|
||||||
|
|
||||||
name.len = p - name.data;
|
name.len = p - name.data;
|
||||||
ngx_rtmp_eval_append_var(s, &b, e, &name);
|
ngx_rtmp_eval_append_var(ctx, &b, e, &name, log);
|
||||||
|
|
||||||
state = NORMAL;
|
state = NORMAL;
|
||||||
|
|
||||||
|
@ -155,7 +153,7 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
|
||||||
}
|
}
|
||||||
|
|
||||||
name.len = p - name.data;
|
name.len = p - name.data;
|
||||||
ngx_rtmp_eval_append_var(s, &b, e, &name);
|
ngx_rtmp_eval_append_var(ctx, &b, e, &name, log);
|
||||||
|
|
||||||
case NORMAL:
|
case NORMAL:
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
@ -169,7 +167,7 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
|
||||||
}
|
}
|
||||||
|
|
||||||
case ESCAPE:
|
case ESCAPE:
|
||||||
ngx_rtmp_eval_append(s, &b, &c, 1);
|
ngx_rtmp_eval_append(&b, &c, 1, log);
|
||||||
state = NORMAL;
|
state = NORMAL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -179,11 +177,11 @@ ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in, ngx_rtmp_eval_t **e,
|
||||||
if (state == NAME) {
|
if (state == NAME) {
|
||||||
p = &in->data[n];
|
p = &in->data[n];
|
||||||
name.len = p - name.data;
|
name.len = p - name.data;
|
||||||
ngx_rtmp_eval_append_var(s, &b, e, &name);
|
ngx_rtmp_eval_append_var(ctx, &b, e, &name, log);
|
||||||
}
|
}
|
||||||
|
|
||||||
c = 0;
|
c = 0;
|
||||||
ngx_rtmp_eval_append(s, &b, &c, 1);
|
ngx_rtmp_eval_append(&b, &c, 1, log);
|
||||||
|
|
||||||
out->data = b.pos;
|
out->data = b.pos;
|
||||||
out->len = b.last - b.pos - 1;
|
out->len = b.last - b.pos - 1;
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
typedef struct ngx_rtmp_eval_s ngx_rtmp_eval_t;
|
typedef struct ngx_rtmp_eval_s ngx_rtmp_eval_t;
|
||||||
|
|
||||||
|
|
||||||
typedef void (* ngx_rtmp_eval_pt)(ngx_rtmp_session_t *s, ngx_rtmp_eval_t *e,
|
typedef void (* ngx_rtmp_eval_pt)(void *ctx, ngx_rtmp_eval_t *e,
|
||||||
ngx_str_t *ret);
|
ngx_str_t *ret);
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,8 +34,8 @@ struct ngx_rtmp_eval_s {
|
||||||
extern ngx_rtmp_eval_t ngx_rtmp_eval_session[];
|
extern ngx_rtmp_eval_t ngx_rtmp_eval_session[];
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t ngx_rtmp_eval(ngx_rtmp_session_t *s, ngx_str_t *in,
|
ngx_int_t ngx_rtmp_eval(void *ctx, ngx_str_t *in, ngx_rtmp_eval_t **e,
|
||||||
ngx_rtmp_eval_t **e, ngx_str_t *out);
|
ngx_str_t *out, ngx_log_t *log);
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t ngx_rtmp_eval_streams(ngx_str_t *in);
|
ngx_int_t ngx_rtmp_eval_streams(ngx_str_t *in);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -8,8 +8,8 @@
|
||||||
#define _NGX_RTMP_VERSION_H_INCLUDED_
|
#define _NGX_RTMP_VERSION_H_INCLUDED_
|
||||||
|
|
||||||
|
|
||||||
#define nginx_rtmp_version 1000006
|
#define nginx_rtmp_version 1000007
|
||||||
#define NGINX_RTMP_VERSION "1.0.6"
|
#define NGINX_RTMP_VERSION "1.0.7"
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NGX_RTMP_VERSION_H_INCLUDED_ */
|
#endif /* _NGX_RTMP_VERSION_H_INCLUDED_ */
|
||||||
|
|
Loading…
Reference in a new issue