aboutsummaryrefslogtreecommitdiffstats
path: root/main/channel.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-22 20:12:29 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-22 20:12:29 +0000
commitcf9764ed3433d15aa5ce8dd1f729730ea563377e (patch)
tree38db2bc6333a52c0ac3ea3a89d027f8dcb36432d /main/channel.c
parent0d1622807f326db091333dcbab93ea0e4abdd02e (diff)
Merged revisions 202497 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r202497 | russell | 2009-06-22 15:11:04 -0500 (Mon, 22 Jun 2009) | 11 lines Merged revisions 202496 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r202496 | russell | 2009-06-22 15:08:53 -0500 (Mon, 22 Jun 2009) | 4 lines Report CallerID change during a masquerade. Reported by: markster ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@202498 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/channel.c')
-rw-r--r--main/channel.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/main/channel.c b/main/channel.c
index 8da9d33b4..4e0be1000 100644
--- a/main/channel.c
+++ b/main/channel.c
@@ -4231,6 +4231,26 @@ static void clone_variables(struct ast_channel *original, struct ast_channel *cl
}
/*!
+ * \pre chan is locked
+ */
+static void report_new_callerid(const struct ast_channel *chan)
+{
+ manager_event(EVENT_FLAG_CALL, "NewCallerid",
+ "Channel: %s\r\n"
+ "CallerIDNum: %s\r\n"
+ "CallerIDName: %s\r\n"
+ "Uniqueid: %s\r\n"
+ "CID-CallingPres: %d (%s)\r\n",
+ chan->name,
+ S_OR(chan->cid.cid_num, ""),
+ S_OR(chan->cid.cid_name, ""),
+ chan->uniqueid,
+ chan->cid.cid_pres,
+ ast_describe_caller_presentation(chan->cid.cid_pres)
+ );
+}
+
+/*!
\brief Masquerade a channel
\note Assumes channel will be locked when called
@@ -4433,6 +4453,7 @@ int ast_do_masquerade(struct ast_channel *original)
tmpcid = original->cid;
original->cid = clone->cid;
clone->cid = tmpcid;
+ report_new_callerid(original);
/* Restore original timing file descriptor */
ast_channel_set_fd(original, AST_TIMING_FD, original->timingfd);
@@ -4530,20 +4551,9 @@ void ast_set_callerid(struct ast_channel *chan, const char *cid_num, const char
ast_free(chan->cid.cid_ani);
chan->cid.cid_ani = ast_strdup(cid_ani);
}
- manager_event(EVENT_FLAG_CALL, "NewCallerid",
- "Channel: %s\r\n"
- "CallerIDNum: %s\r\n"
- "CallerIDName: %s\r\n"
- "Uniqueid: %s\r\n"
- "CID-CallingPres: %d (%s)\r\n",
- chan->name,
- S_OR(chan->cid.cid_num, ""),
- S_OR(chan->cid.cid_name, ""),
- chan->uniqueid,
- chan->cid.cid_pres,
- ast_describe_caller_presentation(chan->cid.cid_pres)
- );
-
+
+ report_new_callerid(chan);
+
ast_channel_unlock(chan);
}