Merged revisions 299405 via svnmerge from
authorRichard Mudgett <rmudgett@digium.com>
Wed, 22 Dec 2010 02:12:01 +0000 (02:12 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 22 Dec 2010 02:12:01 +0000 (02:12 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

........
  r299405 | rmudgett | 2010-12-21 20:10:39 -0600 (Tue, 21 Dec 2010) | 17 lines

  Chan_dahdi sends an empty COLP on the bridged channel.

  Chan_dahdi always inserts a connected party IE when you call from one
  dahdi channel to another dahdi channel, even if no such information was
  received on the 2nd channel.  This clears the display of many phones.

  * Removed leftover artifact from before the valid flag was added.

  * Updated all of the channel's caller id information with the new
  connected line information instead of just the string parts.

  (closes issue #18508)
  Reported by: wimpy
  Patches:
        issue18508_trunk.patch uploaded by rmudgett (license 664)
  Tested by: wimpy, rmudgett
........

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

channels/sig_pri.c

index ab9c7d9..7f7cfcc 100644 (file)
@@ -3751,9 +3751,6 @@ static void sig_pri_handle_subcmds(struct sig_pri_span *pri, int chanpos, int ev
                                                ast_connected.id.number.str, sizeof(pri->pvts[chanpos]->cid_num));
                                        pri->pvts[chanpos]->cid_ton = ast_connected.id.number.plan;
                                        caller_id_update = 1;
-                               } else {
-                                       ast_connected.id.number.valid = 1;
-                                       ast_connected.id.number.str = ast_strdup("");
                                }
                                ast_connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
 
@@ -3770,12 +3767,16 @@ static void sig_pri_handle_subcmds(struct sig_pri_span *pri, int chanpos, int ev
                                }
 #endif /* defined(HAVE_PRI_SUBADDR) */
                                if (caller_id_update) {
+                                       struct ast_party_caller ast_caller;
+
                                        pri->pvts[chanpos]->callingpres =
                                                ast_party_id_presentation(&ast_connected.id);
                                        sig_pri_set_caller_id(pri->pvts[chanpos]);
-                                       ast_set_callerid(owner, S_OR(ast_connected.id.number.str, NULL),
-                                               S_OR(ast_connected.id.name.str, NULL),
-                                               S_OR(ast_connected.id.number.str, NULL));
+
+                                       ast_party_caller_set_init(&ast_caller, &owner->caller);
+                                       ast_caller.id = ast_connected.id;
+                                       ast_caller.ani = ast_connected.id;
+                                       ast_channel_set_caller_event(owner, &ast_caller, NULL);
                                }
 
                                /* Update the connected line information on the other channel */