From: Kevin Harwell Date: Mon, 24 Aug 2020 21:26:23 +0000 (-0500) Subject: chan_pjsip: disallow PJSIP_SEND_SESSION_REFRESH pre-answer execution X-Git-Tag: 13.37.0-rc1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf139ff519670117735373c58c892f5b816429df;p=thirdparty%2Fasterisk.git chan_pjsip: disallow PJSIP_SEND_SESSION_REFRESH pre-answer execution This patch makes it so if the PJSIP_SEND_SESSION_REFRESH dialplan function is called on a channel prior to answering a warning is issued and the function returns unsuccessful. ASTERISK-28878 #close Change-Id: I053f767d10cf3b2b898fa9e3e7c35ff07e23c9bb --- diff --git a/channels/pjsip/dialplan_functions.c b/channels/pjsip/dialplan_functions.c index 3a6f0a4cb7..60be7c1199 100644 --- a/channels/pjsip/dialplan_functions.c +++ b/channels/pjsip/dialplan_functions.c @@ -1532,6 +1532,11 @@ int pjsip_acf_session_refresh_write(struct ast_channel *chan, const char *cmd, c return -1; } + if (ast_channel_state(chan) != AST_STATE_UP) { + ast_log(LOG_WARNING, "'%s' not allowed on unanswered channel '%s'.\n", cmd, ast_channel_name(chan)); + return -1; + } + if (strcmp(ast_channel_tech(chan)->type, "PJSIP")) { ast_log(LOG_WARNING, "Cannot call %s on a non-PJSIP channel\n", cmd); return -1; diff --git a/doc/CHANGES-staging/pjsip_send_session_refresh.txt b/doc/CHANGES-staging/pjsip_send_session_refresh.txt new file mode 100644 index 0000000000..0705c293d7 --- /dev/null +++ b/doc/CHANGES-staging/pjsip_send_session_refresh.txt @@ -0,0 +1,4 @@ +Subject: chan_pjsip + +The PJSIP_SEND_SESSION_REFRESH dialplan function now issues a warning, and +returns unsuccessful if it's used on a channel prior to answering.