diff options
author | crichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-07-23 12:07:15 +0000 |
---|---|---|
committer | crichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-07-23 12:07:15 +0000 |
commit | 6e2c5f897060f5ed8f6c5f6166a9adfdbfb6e7d7 (patch) | |
tree | fd1ef4965309ae8f1280a04a38546e581e9e1b7a /channels/misdn | |
parent | d05040cf6752887cf386353733f83a7626ac73cd (diff) |
Merged revisions 132826 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r132826 | crichter | 2008-07-23 13:37:50 +0200 (Mi, 23 Jul 2008) | 1 line
another Fix because of r119585, this commit has broken high frequented BRI Ports, there was a possibility that a channel, that was marked as in_use would be reused later, the corresponding port could got stuck then. So it is recommended to upgrade for chan_misdn users.
........
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@132883 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/misdn')
-rw-r--r-- | channels/misdn/isdn_lib.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index df963eec8..5c5f124bb 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -2637,6 +2637,19 @@ static int handle_frm(msg_t *msg) misdn_make_dummy(&dummybc, stack->port, MISDN_ID_GLOBAL, stack->nt, 0); bc=&dummybc; } + + if (!bc && (frm->prim==(CC_SETUP|INDICATION)) ) { + make_dummy(&dummybc, stack->port, MISDN_ID_GLOBAL, stack->nt, 0); + dummybc.port=stack->port; + dummybc.l3_id=frm->dinfo; + bc=&dummybc; + + misdn_lib_send_event(bc,EVENT_RELEASE_COMPLETE); + + free_msg(msg); + return 1; + } + handle_frm_bc: if (bc ) { @@ -3121,7 +3134,7 @@ static int test_inuse(struct misdn_bchannel *bc) struct timeval now; gettimeofday(&now, NULL); if (!bc->in_use) { - if ( bc->last_used.tv_sec == now.tv_sec ) { + if (misdn_lib_port_is_pri(bc->port) && bc->last_used.tv_sec == now.tv_sec ) { cb_log(2,bc->port, "channel with stid:%x for one second still in use! (n:%d lu:%d)\n", bc->b_stid, (int) now.tv_sec, (int) bc->last_used.tv_sec); return 1; } |