created netcall log to escape crash at the end of detached netcakk

This commit is contained in:
Roman Arutyunyan 2012-04-15 22:42:32 +04:00
parent 9a21b694af
commit e9426a4090

View file

@ -26,6 +26,7 @@ ngx_str_t ngx_rtmp_netcall_content_type_urlencoded =
typedef struct { typedef struct {
ngx_msec_t timeout; ngx_msec_t timeout;
ngx_log_t *log;
} ngx_rtmp_netcall_app_conf_t; } ngx_rtmp_netcall_app_conf_t;
@ -102,6 +103,7 @@ ngx_rtmp_netcall_create_app_conf(ngx_conf_t *cf)
} }
nacf->timeout = NGX_CONF_UNSET_MSEC; nacf->timeout = NGX_CONF_UNSET_MSEC;
nacf->log = &cf->cycle->new_log;
return nacf; return nacf;
} }
@ -171,6 +173,11 @@ ngx_rtmp_netcall_create(ngx_rtmp_session_t *s, ngx_rtmp_netcall_init_t *ci)
pool = NULL; pool = NULL;
c = s->connection; c = s->connection;
cacf = ngx_rtmp_get_module_app_conf(s, ngx_rtmp_netcall_module);
if (cacf == NULL) {
goto error;
}
/* get module context */ /* get module context */
ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_netcall_module); ctx = ngx_rtmp_get_module_ctx(s, ngx_rtmp_netcall_module);
if (ctx == NULL) { if (ctx == NULL) {
@ -182,8 +189,11 @@ ngx_rtmp_netcall_create(ngx_rtmp_session_t *s, ngx_rtmp_netcall_init_t *ci)
ngx_rtmp_set_ctx(s, ctx, ngx_rtmp_netcall_module); ngx_rtmp_set_ctx(s, ctx, ngx_rtmp_netcall_module);
} }
/* create netcall pool, connection, session */ /* Create netcall pool, connection, session.
pool = ngx_create_pool(4096, s->connection->log); * Note we use shared (app-wide) log because
* s->connection->log might be unavailable
* in detached netcall when it's being closed */
pool = ngx_create_pool(4096, cacf->log);
if (pool == NULL) { if (pool == NULL) {
goto error; goto error;
} }
@ -207,11 +217,6 @@ ngx_rtmp_netcall_create(ngx_rtmp_session_t *s, ngx_rtmp_netcall_init_t *ci)
ngx_memcpy(cs->arg, ci->arg, ci->argsize); ngx_memcpy(cs->arg, ci->arg, ci->argsize);
} }
cacf = ngx_rtmp_get_module_app_conf(s, ngx_rtmp_netcall_module);
if (cacf == NULL) {
goto error;
}
cs->timeout = cacf->timeout; cs->timeout = cacf->timeout;
cs->url = ci->url; cs->url = ci->url;
cs->session = s; cs->session = s;
@ -221,7 +226,7 @@ ngx_rtmp_netcall_create(ngx_rtmp_session_t *s, ngx_rtmp_netcall_init_t *ci)
cs->detached = 1; cs->detached = 1;
} }
pc->log = s->connection->log; pc->log = cacf->log;
pc->get = ngx_rtmp_netcall_get_peer; pc->get = ngx_rtmp_netcall_get_peer;
pc->free = ngx_rtmp_netcall_free_peer; pc->free = ngx_rtmp_netcall_free_peer;
pc->data = cs; pc->data = cs;