diff options
author | Joshua Colp <jcolp@digium.com> | 2017-03-14 13:35:27 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-03-14 13:35:27 -0500 |
commit | e87a763e55e6e2f1d6b25e726efe835f2bb5514b (patch) | |
tree | 754117168427b339d41a902a56b7756f3856b977 /channels | |
parent | 8af0a0f55d540626d7f2e87fcc5bfe231723be88 (diff) | |
parent | e237bb90aff6064aabfff047cbd00da51d4b8832 (diff) |
Merge "chan_pjsip: Don't assume a session will have a channel." into 14
Diffstat (limited to 'channels')
-rw-r--r-- | channels/pjsip/dialplan_functions.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/channels/pjsip/dialplan_functions.c b/channels/pjsip/dialplan_functions.c index a3e0365c9..0fb8d11c9 100644 --- a/channels/pjsip/dialplan_functions.c +++ b/channels/pjsip/dialplan_functions.c @@ -737,17 +737,27 @@ static int read_pjsip(void *data) struct pjsip_func_args *func_args = data; if (!strcmp(func_args->param, "rtp")) { + if (!func_args->session->channel) { + func_args->ret = -1; + return 0; + } func_args->ret = channel_read_rtp(func_args->session->channel, func_args->type, func_args->field, func_args->buf, func_args->len); } else if (!strcmp(func_args->param, "rtcp")) { + if (!func_args->session->channel) { + func_args->ret = -1; + return 0; + } func_args->ret = channel_read_rtcp(func_args->session->channel, func_args->type, func_args->field, func_args->buf, func_args->len); } else if (!strcmp(func_args->param, "endpoint")) { if (!func_args->session->endpoint) { - ast_log(AST_LOG_WARNING, "Channel %s has no endpoint!\n", ast_channel_name(func_args->session->channel)); - return -1; + ast_log(AST_LOG_WARNING, "Channel %s has no endpoint!\n", func_args->session->channel ? + ast_channel_name(func_args->session->channel) : "<unknown>"); + func_args->ret = -1; + return 0; } snprintf(func_args->buf, func_args->len, "%s", ast_sorcery_object_get_id(func_args->session->endpoint)); } else if (!strcmp(func_args->param, "contact")) { @@ -761,6 +771,10 @@ static int read_pjsip(void *data) } snprintf(func_args->buf, func_args->len, "%s", ast_sorcery_object_get_id(func_args->session->aor)); } else if (!strcmp(func_args->param, "pjsip")) { + if (!func_args->session->channel) { + func_args->ret = -1; + return 0; + } func_args->ret = channel_read_pjsip(func_args->session->channel, func_args->type, func_args->field, func_args->buf, func_args->len); |