summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorChristian Richter <christian.richter@beronet.com>2006-07-04 17:04:21 +0000
committerChristian Richter <christian.richter@beronet.com>2006-07-04 17:04:21 +0000
commit130ce699870eaeea70d3487ffb3a625f90884f85 (patch)
tree23fd540f0b2ba25d915879eb5f9eeca1837b2cfc /channels
parentf9df5318cec1bfde49ac891de6905ea1e9a45f6b (diff)
removed the reloading of the ntdebug stuff, since this is a bit buggy, we only set it when loading chan_misdn for now. fixed a litle state problem when receiving RELEASE_COMPLETE. also we may only play tones to a NT when the extension does not match and such cases.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@36941 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_misdn.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index 6d02eebab..daf5448d8 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -743,14 +743,6 @@ static void reload_config(void)
misdn_debug[i] = cfg_debug;
misdn_debug_only[i] = 0;
}
-
- int ntflags=0;
- char ntfile[BUFFERSIZE+1];
-
- misdn_cfg_get( 0, MISDN_GEN_NTDEBUGFLAGS, &ntflags, sizeof(int));
- misdn_cfg_get( 0, MISDN_GEN_NTDEBUGFILE, &ntfile, BUFFERSIZE);
-
- misdn_lib_nt_debug_init(ntflags,ntfile);
}
static int misdn_reload (int fd, int argc, char *argv[])
@@ -3431,7 +3423,8 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
if(!ast_canmatch_extension(ch->ast, ch->context, bc->dad, 1, bc->oad)) {
chan_misdn_log(-1, bc->port, "Extension can never match, so disconnecting\n");
- tone_indicate(ch,TONE_BUSY);
+ if (bc->nt)
+ tone_indicate(ch,TONE_BUSY);
ch->state=MISDN_EXTCANTMATCH;
bc->out_cause=1;
@@ -3447,7 +3440,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
if (ast_pbx_start(ch->ast)<0) {
chan_misdn_log(-1, bc->port, "ast_pbx_start returned < 0 in INFO\n");
- tone_indicate(ch,TONE_BUSY);
+ if (bc->nt) tone_indicate(ch,TONE_BUSY);
misdn_lib_send_event(bc, EVENT_DISCONNECT );
}
@@ -3617,7 +3610,8 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
chan_misdn_log(-1, bc->port, "Extension can never match, so disconnecting\n");
- tone_indicate(ch,TONE_BUSY);
+ if (bc->nt)
+ tone_indicate(ch,TONE_BUSY);
ch->state=MISDN_EXTCANTMATCH;
bc->out_cause=1;
@@ -3644,11 +3638,11 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
chan_misdn_log(-1, bc->port, "ast_pbx_start returned <0 in SETUP\n");
chan=NULL;
- tone_indicate(ch,TONE_BUSY);
- if (bc->nt)
+ if (bc->nt) {
+ tone_indicate(ch,TONE_BUSY);
misdn_lib_send_event(bc, EVENT_RELEASE_COMPLETE );
- else
+ } else
misdn_lib_send_event(bc, EVENT_RELEASE);
}
} else {
@@ -3882,9 +3876,9 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
break;
case EVENT_RELEASE_COMPLETE:
{
- ch->state=MISDN_CLEANING;
stop_bc_tones(ch);
release_chan(bc);
+ ch->state=MISDN_CLEANING;
}
break;
@@ -4236,11 +4230,16 @@ static int load_module(void *mod)
if (misdn_lib_init(ports, &iface, NULL))
chan_misdn_log(0, 0, "No te ports initialized\n");
- }
+
+ int ntflags=0;
+ char ntfile[BUFFERSIZE+1];
+ misdn_cfg_get( 0, MISDN_GEN_NTDEBUGFLAGS, &ntflags, sizeof(int));
+ misdn_cfg_get( 0, MISDN_GEN_NTDEBUGFILE, &ntfile, BUFFERSIZE);
+ misdn_lib_nt_debug_init(ntflags,ntfile);
- reload_config();
+ }
{
if (ast_channel_register(&misdn_tech)) {