aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_gtalk.c
diff options
context:
space:
mode:
authorphsultan <phsultan@f38db490-d61c-443f-a65b-d21fe96a405b>2008-01-09 16:44:24 +0000
committerphsultan <phsultan@f38db490-d61c-443f-a65b-d21fe96a405b>2008-01-09 16:44:24 +0000
commit2db70229f898dd99801e0356fdd1ec8746cebd67 (patch)
treeae6ee2a36dd060c10c8ccb053ebe91e792dbc260 /channels/chan_gtalk.c
parent231c582d633493463cffa43c250b89eac3b3a580 (diff)
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: http://svn.digium.com/svn/asterisk/branches/1.4@97489 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_gtalk.c')
-rw-r--r--channels/chan_gtalk.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/channels/chan_gtalk.c b/channels/chan_gtalk.c
index e58024ea2..2df0a95d8 100644
--- a/channels/chan_gtalk.c
+++ b/channels/chan_gtalk.c
@@ -919,6 +919,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, "/");
@@ -940,7 +943,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;
@@ -999,20 +1001,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;