aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_misdn.c
diff options
context:
space:
mode:
authorcrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-24 23:21:03 +0000
committercrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-24 23:21:03 +0000
commit896fe12d0c02f1b7b1da9ed1a20bea795db8facd (patch)
tree08a637ca7fb3e9596c0e7e74427ffd74765c3e61 /channels/chan_misdn.c
parentbae44ae9652e3cb28474d4d8a23e618981c72dee (diff)
added EVENT_NEW_CHANNEL. We change the channel name now when we got the real channel, also changed name generation to new stringfield api
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@30132 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_misdn.c')
-rw-r--r--channels/chan_misdn.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index 9989f9820..6e9728979 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -2588,6 +2588,21 @@ static struct ast_channel_tech misdn_tech_wo_bridge = {
static unsigned long glob_channel=0;
+static void update_name(struct ast_channel *tmp, int port, int c)
+{
+ if (c<=0) {
+ c=glob_channel++;
+ ast_string_field_build(tmp, name, "%s/%d-u%d",
+ misdn_type, port, c);
+ } else {
+ ast_string_field_build(tmp, name, "%s/%d-%d",
+ misdn_type, port, c);
+ }
+
+ chan_misdn_log(3,port," --> updating channel name to [%s]\n",tmp->name);
+
+}
+
static struct ast_channel *misdn_new(struct chan_list *chlist, int state, char *exten, char *callerid, int format, int port, int c)
{
struct ast_channel *tmp;
@@ -2597,16 +2612,8 @@ static struct ast_channel *misdn_new(struct chan_list *chlist, int state, char
if (tmp) {
chan_misdn_log(2, 0, " --> * NEW CHANNEL dad:%s oad:%s\n",exten,callerid);
-
- if (c<=0) {
- c=glob_channel++;
- ast_string_field_build(tmp, name, "%s/%d-u%d",
- misdn_type, port, c);
- } else {
- ast_string_field_build(tmp, name, "%s/%d-%d",
- misdn_type, port, c);
- }
-
+ update_name(tmp,port,c);
+
tmp->nativeformats = prefformat;
tmp->readformat = format;
@@ -3099,10 +3106,13 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
switch (event) {
-
+
case EVENT_BCHAN_ACTIVATED:
break;
+ case EVENT_NEW_CHANNEL:
+ update_name(ch->ast,bc->port,bc->channel);
+ break;
case EVENT_NEW_L3ID:
ch->l3id=bc->l3_id;
@@ -3421,6 +3431,10 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
case EVENT_SETUP_ACKNOWLEDGE:
{
ch->state = MISDN_CALLING_ACKNOWLEDGE;
+
+ if (bc->channel)
+ update_name(ch->ast,bc->port,bc->channel);
+
if (!ast_strlen_zero(bc->infos_pending)) {
/* TX Pending Infos */