From c9b8afb447b8cf7a1bcf8bd0404b2ec9f12d3b54 Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Mon, 12 Nov 2007 12:49:19 +0000 Subject: Merged revisions 89169 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ........ r89169 | crichter | 2007-11-12 10:45:36 +0100 (Mo, 12 Nov 2007) | 1 line aded ntkeepcalls option, to avoid droƃpping calls when the L2 goes down on a PTP link. There are some pbx which do turn off the L1 for a very short while and restart it immediately. normally T310 should be started and after 10 seconds or so the calls should be dropped, this is a simple fix wihtout this timer. ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@89174 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_misdn.c | 4 +++- channels/misdn/chan_misdn_config.h | 1 + channels/misdn/isdn_lib.c | 18 +++++++++++++++++- channels/misdn/isdn_lib.h | 2 ++ channels/misdn_config.c | 4 ++++ 5 files changed, 27 insertions(+), 2 deletions(-) (limited to 'channels') diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 1297c3c29..4349d39b5 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -5024,7 +5024,7 @@ static int unload_module(void) static int load_module(void) { int i, port; - int ntflags = 0; + int ntflags = 0, ntkc = 0; char ports[256] = ""; char tempbuf[BUFFERSIZE + 1]; char ntfile[BUFFERSIZE + 1]; @@ -5091,7 +5091,9 @@ static int load_module(void) misdn_cfg_get(0, MISDN_GEN_NTDEBUGFLAGS, &ntflags, sizeof(ntflags)); misdn_cfg_get(0, MISDN_GEN_NTDEBUGFILE, &ntfile, sizeof(ntfile)); + misdn_cfg_get( 0, MISDN_GEN_NTKEEPCALLS, &ntkc, sizeof(ntkc)); + misdn_lib_nt_keepcalls(ntkc); misdn_lib_nt_debug_init(ntflags, ntfile); if (ast_channel_register(&misdn_tech)) { diff --git a/channels/misdn/chan_misdn_config.h b/channels/misdn/chan_misdn_config.h index 42fdd8a81..f9475bd03 100644 --- a/channels/misdn/chan_misdn_config.h +++ b/channels/misdn/chan_misdn_config.h @@ -97,6 +97,7 @@ enum misdn_cfg_elements { MISDN_GEN_DYNAMIC_CRYPT, /* int (bool) */ MISDN_GEN_CRYPT_PREFIX, /* char[] */ MISDN_GEN_CRYPT_KEYS, /* char[] */ + MISDN_GEN_NTKEEPCALLS, /* int (bool) */ MISDN_GEN_NTDEBUGFLAGS, /* int */ MISDN_GEN_NTDEBUGFILE, /* char[] */ MISDN_GEN_LAST diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index 443bc90fb..dba065f71 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -2752,12 +2752,14 @@ static int handle_l1(msg_t *msg) case PH_DEACTIVATE | CONFIRM: case PH_DEACTIVATE | INDICATION: cb_log (3, stack->port, "L1: PH L1Link Down! \n"); - + +#if 0 for (i=0; i<=stack->b_num; i++) { if (global_state == MISDN_INITIALIZED) { cb_event(EVENT_CLEANUP, &stack->bc[i], glob_mgr->user_data); } } +#endif if (stack->nt) { if (stack->nst.l1_l2(&stack->nst, msg)) @@ -2859,7 +2861,9 @@ static int handle_mgmt(msg_t *msg) case SSTATUS_L1_DEACTIVATED: cb_log(3, 0, "MGMT: SSTATUS: L1_DEACTIVATED \n"); stack->l1link=0; +#if 0 clear_l3(stack); +#endif break; case SSTATUS_L2_ESTABLISHED: @@ -3866,6 +3870,18 @@ int misdn_lib_maxports_get() { /** BE AWARE WE HAVE NO CB_LOG HERE! **/ } +void misdn_lib_nt_keepcalls( int kc) +{ +#ifdef FEATURE_NET_KEEPCALLS + if (kc) { + struct misdn_stack *stack=get_misdn_stack(); + for ( ; stack; stack=stack->next) { + stack->nst.feature |= FEATURE_NET_KEEPCALLS; + } + } +#endif +} + void misdn_lib_nt_debug_init( int flags, char *file ) { int static init=0; diff --git a/channels/misdn/isdn_lib.h b/channels/misdn/isdn_lib.h index 16dec8bb9..5dc374c4f 100644 --- a/channels/misdn/isdn_lib.h +++ b/channels/misdn/isdn_lib.h @@ -382,6 +382,8 @@ struct misdn_lib_iface { /***** USER IFACE **********/ +void misdn_lib_nt_keepcalls(int kc); + void misdn_lib_nt_debug_init( int flags, char *file ); int misdn_lib_init(char *portlist, struct misdn_lib_iface* iface, void *user_data); diff --git a/channels/misdn_config.c b/channels/misdn_config.c index 71ed157ca..467e0a8af 100644 --- a/channels/misdn_config.c +++ b/channels/misdn_config.c @@ -369,6 +369,10 @@ static const struct misdn_cfg_spec gen_spec[] = { { "crypt_keys", MISDN_GEN_CRYPT_KEYS, MISDN_CTYPE_STR, NO_DEFAULT, NONE, "Keys for cryption, you reference them in the dialplan\n" "\tLater also in dynamic encr." }, + { "ntkeepcalls", MISDN_GEN_NTKEEPCALLS, MISDN_CTYPE_BOOL, "no", NONE, + "avoid dropping calls if the L2 goes down. some nortel pbx\n" + "do put down the L2/L1 for some milliseconds even if there\n" + "are running calls. with this option you can avoid dropping them\n" }, { "ntdebugflags", MISDN_GEN_NTDEBUGFLAGS, MISDN_CTYPE_INT, "0", NONE, "No description yet."}, { "ntdebugfile", MISDN_GEN_NTDEBUGFILE, MISDN_CTYPE_STR, "/var/log/misdn-nt.log", NONE, -- cgit v1.2.3