From 5999daebc29a0ffc74d68762b4b3e616efbe754b Mon Sep 17 00:00:00 2001 From: Roman Arutyunyan Date: Tue, 13 Nov 2012 21:28:09 +0400 Subject: [PATCH] fixed string allocation in relay module --- ngx_rtmp_relay_module.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/ngx_rtmp_relay_module.c b/ngx_rtmp_relay_module.c index 6f6073d..20cfcd9 100644 --- a/ngx_rtmp_relay_module.c +++ b/ngx_rtmp_relay_module.c @@ -272,6 +272,8 @@ ngx_rtmp_relay_create_remote_ctx(ngx_rtmp_session_t *s, ngx_str_t* name, ngx_str_t v, *uri; u_char *first, *last, *p; + ngx_log_debug0(NGX_LOG_DEBUG_RTMP, s->connection->log, 0, + "relay: create remote context"); racf = ngx_rtmp_get_module_app_conf(s, ngx_rtmp_relay_module); @@ -326,6 +328,10 @@ ngx_rtmp_relay_create_remote_ctx(ngx_rtmp_session_t *s, ngx_str_t* name, /* deduce app */ p = ngx_strlchr(first, last, '/'); + if (p == NULL) { + p = last; + } + if (rctx->app.len == 0 && first != p) { v.data = first; v.len = p - first; @@ -335,7 +341,10 @@ ngx_rtmp_relay_create_remote_ctx(ngx_rtmp_session_t *s, ngx_str_t* name, } /* deduce play_path */ - ++p; + if (p != last) { + ++p; + } + if (rctx->play_path.len == 0 && p != last) { v.data = p; v.len = last - p; @@ -418,6 +427,9 @@ ngx_rtmp_relay_create_local_ctx(ngx_rtmp_session_t *s, ngx_str_t *name, { ngx_rtmp_relay_ctx_t *ctx; + ngx_log_debug0(NGX_LOG_DEBUG_RTMP, s->connection->log, 0, + "relay: create local context"); + ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_relay_module); if (ctx == NULL) { ctx = ngx_pcalloc(s->connection->pool, sizeof(ngx_rtmp_relay_ctx_t));