aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-23 16:42:28 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-23 16:42:28 +0000
commit605dd3ee485525fe04256a101af73f675eb98fbb (patch)
tree6543e79783314d24b4d5f8e94fb94022f99a780e /channels
parentc21ba73497572490927ca4b65de01845d09cca8c (diff)
Merged revisions 132883,132966 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r132883 | crichter | 2008-07-23 07:07:15 -0500 (Wed, 23 Jul 2008) | 9 lines 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. ........ ................ r132966 | kpfleming | 2008-07-23 11:38:28 -0500 (Wed, 23 Jul 2008) | 2 lines use correct function name... please compile with --enable-dev-mode ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@132967 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/misdn/isdn_lib.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c
index a8d730e38..81ea7fb7b 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)) ) {
+ misdn_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,8 +3134,8 @@ 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) {
- cb_log(0,bc->port, "channel with stid:%x for one second still in use!\n", bc->b_stid);
+ 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;
}
}