]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Make sure that we show the correct extension if dialed from a macro
authorJason Parker <jparker@digium.com>
Thu, 2 Aug 2007 15:15:45 +0000 (15:15 +0000)
committerJason Parker <jparker@digium.com>
Thu, 2 Aug 2007 15:15:45 +0000 (15:15 +0000)
"From: 5555" rather than "From: s"

Issue 10358, initial patch by DEA, reworked by me to use S_OR, tested by sbisker

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

channels/chan_skinny.c

index c3f4e4609823880bee1172f93025f9c87e67aad1..52c413244e1448ea3a1d96fc59e78c0176a35fe2 100644 (file)
@@ -2525,6 +2525,9 @@ static int skinny_answer(struct ast_channel *ast)
        struct skinny_line *l = sub->parent;
        struct skinny_device *d = l->parent;
        struct skinnysession *s = d->session;
+       char exten[AST_MAX_EXTENSION] = "";
+
+       ast_copy_string(exten, S_OR(ast->macroexten, ast->exten), sizeof(exten));
 
        sub->cxmode = SKINNY_CX_SENDRECV;
        if (!sub->rtp) {
@@ -2540,7 +2543,7 @@ static int skinny_answer(struct ast_channel *ast)
        /* order matters here...
           for some reason, transmit_callinfo must be before transmit_callstate,
           or you won't get keypad messages in some situations. */
-       transmit_callinfo(s, ast->cid.cid_name, ast->cid.cid_num, ast->exten, ast->exten, l->instance, sub->callid, 2);
+       transmit_callinfo(s, ast->cid.cid_name, ast->cid.cid_num, exten, exten, l->instance, sub->callid, 2);
        transmit_callstate(s, l->instance, SKINNY_CONNECTED, sub->callid);
        transmit_selectsoftkeys(s, l->instance, sub->callid, KEYDEF_CONNECTED);
        transmit_displaypromptstatus(s, "Connected", 0, l->instance, sub->callid);
@@ -2719,6 +2722,9 @@ static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, s
        struct skinny_line *l = sub->parent;
        struct skinny_device *d = l->parent;
        struct skinnysession *s = d->session;
+       char exten[AST_MAX_EXTENSION] = "";
+
+       ast_copy_string(exten, S_OR(ast->macroexten, ast->exten), sizeof(exten));
 
        if (skinnydebug)
                ast_verbose(VERBOSE_PREFIX_3 "Asked to indicate '%s' condition on channel %s\n", control2str(ind), ast->name);
@@ -2728,9 +2734,9 @@ static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, s
                        if (!sub->progress) {
                                transmit_tone(s, SKINNY_ALERT, l->instance, sub->callid);
                                transmit_callstate(s, l->instance, SKINNY_RINGOUT, sub->callid);
-                               transmit_dialednumber(s, ast->exten, l->instance, sub->callid);
+                               transmit_dialednumber(s, exten, l->instance, sub->callid);
                                transmit_displaypromptstatus(s, "Ring Out", 0, l->instance, sub->callid);
-                               transmit_callinfo(s, ast->cid.cid_name, ast->cid.cid_num, ast->exten, ast->exten, l->instance, sub->callid, 2); /* 2 = outgoing from phone */
+                               transmit_callinfo(s, ast->cid.cid_name, ast->cid.cid_num, exten, exten, l->instance, sub->callid, 2); /* 2 = outgoing from phone */
                                sub->ringing = 1;
                                break;
                        }
@@ -2759,7 +2765,7 @@ static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, s
                        transmit_tone(s, SKINNY_ALERT, l->instance, sub->callid);
                        transmit_callstate(s, l->instance, SKINNY_PROGRESS, sub->callid);
                        transmit_displaypromptstatus(s, "Call Progress", 0, l->instance, sub->callid);
-                       transmit_callinfo(s, ast->cid.cid_name, ast->cid.cid_num, ast->exten, ast->exten, l->instance, sub->callid, 2); /* 2 = outgoing from phone */
+                       transmit_callinfo(s, ast->cid.cid_name, ast->cid.cid_num, exten, exten, l->instance, sub->callid, 2); /* 2 = outgoing from phone */
                        sub->progress = 1;
                        break;
                }