Merged revisions 97489 via svnmerge from
authorPhilippe Sultan <philippe.sultan@gmail.com>
Wed, 9 Jan 2008 16:59:09 +0000 (16:59 +0000)
committerPhilippe Sultan <philippe.sultan@gmail.com>
Wed, 9 Jan 2008 16:59:09 +0000 (16:59 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r97489 | phsultan | 2008-01-09 17:44:24 +0100 (Wed, 09 Jan 2008) | 7 lines

Set the caller id within the gtalk_alloc function.

As underlined in issue #10437 by Josh, we need to prevent a possible
memory leak. We only set the name part of the caller id, the number
part is not relevant when dealing with JIDs.

Closes issue #11549.
........

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

channels/chan_gtalk.c

index 0d04068..05e7de7 100644 (file)
@@ -896,6 +896,9 @@ static struct gtalk_pvt *gtalk_alloc(struct gtalk *client, const char *us, const
                return NULL;
        }
 
+       /* Set CALLERID(name) to the full JID of the remote peer */
+       ast_copy_string(tmp->cid_name, tmp->them, sizeof(tmp->cid_name));
+
        if(strchr(tmp->us, '/')) {
                data = ast_strdupa(tmp->us);
                exten = strsep(&data, "/");
@@ -917,7 +920,6 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i,
        int fmt;
        int what;
        const char *n2;
-       char *data = NULL, *cid = NULL;
 
        if (title)
                n2 = title;
@@ -981,20 +983,7 @@ static struct ast_channel *gtalk_new(struct gtalk *client, struct gtalk_pvt *i,
        ast_module_ref(ast_module_info->self);
        ast_copy_string(tmp->context, client->context, sizeof(tmp->context));
        ast_copy_string(tmp->exten, i->exten, sizeof(tmp->exten));
-       /* Don't use ast_set_callerid() here because it will
-        * generate a needless NewCallerID event */
-       if (!strcasecmp(client->name, "guest")) {
-               data = ast_strdupa(i->them);
-               if (strchr(data, '/')) {
-                       cid = strsep(&data, "/");
-               } else
-                       cid = data;
-       } else {
-               data =  ast_strdupa(client->user);
-               cid = data;
-       }
-       cid = strsep(&cid, "@");
-       tmp->cid.cid_ani = ast_strdup(cid);
+
        if (!ast_strlen_zero(i->exten) && strcmp(i->exten, "s"))
                tmp->cid.cid_dnid = ast_strdup(i->exten);
        tmp->priority = 1;