PJSIP: Prevent crash on blind transfer
authorKinsey Moore <kmoore@digium.com>
Fri, 30 May 2014 14:53:44 +0000 (14:53 +0000)
committerKinsey Moore <kmoore@digium.com>
Fri, 30 May 2014 14:53:44 +0000 (14:53 +0000)
Blind transfers don't go too well with NULL channels which can occur if
the channel has already been transferred away.

(closes issue ASTERISK-23718)
Reported by: Jonathan Rose
........

Merged revisions 414948 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414949 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_pjsip_refer.c

index 20e3012..efcee67 100644 (file)
@@ -691,11 +691,16 @@ static int refer_incoming_attended_request(struct ast_sip_session *session, pjsi
 static int refer_incoming_blind_request(struct ast_sip_session *session, pjsip_rx_data *rdata, pjsip_sip_uri *target,
        struct refer_progress *progress)
 {
-       const char *context = (session->channel ? pbx_builtin_getvar_helper(session->channel, "TRANSFER_CONTEXT") : "");
+       const char *context;
        char exten[AST_MAX_EXTENSION];
        struct refer_blind refer = { 0, };
 
+       if (!session->channel) {
+               return 404;
+       }
+
        /* If no explicit transfer context has been provided use their configured context */
+       context = pbx_builtin_getvar_helper(session->channel, "TRANSFER_CONTEXT");
        if (ast_strlen_zero(context)) {
                context = session->endpoint->context;
        }