From: Richard Mudgett Date: Fri, 30 Nov 2012 21:45:04 +0000 (+0000) Subject: chan_misdn: Fix sending RELEASE_COMPLETE in response to SETUP. X-Git-Tag: certified/1.8.15-cert2~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=645015a75a70f25eb882b6e8a6863ec9207b7333;p=thirdparty%2Fasterisk.git chan_misdn: Fix sending RELEASE_COMPLETE in response to SETUP. Fix sending a RELEASE_COMPLETE in response to a SETUP if chan_misdn does not have a B channel available to assign to the call. (closes issue ABE-2869) Reported by: Guenther Kelleter Patches: setup-reject_2.diff (license #6372) patch uploaded by Guenther Kelleter Modified ........ Merged revision 376949 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier ........ Merged revisions 376950 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/1.8.15@376955 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index 42bbd8f8fb..8dcf41faab 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -2700,6 +2700,10 @@ static int handle_frm_te(msg_t *msg) dummybc.l3_id = frm->dinfo; bc = &dummybc; + /* set a reasonable cause */ + bc->out_cause = AST_CAUSE_REQUESTED_CHAN_UNAVAIL; + /* if we want to send something the flag must be set! */ + bc->need_release_complete = 1; misdn_lib_send_event(bc, EVENT_RELEASE_COMPLETE); free_msg(msg); @@ -4066,14 +4070,19 @@ static void manager_event_handler(void *arg) if (bc) send_msg(glob_mgr->midev, bc, msg); else { + struct misdn_bchannel dummybc; + + misdn_make_dummy(&dummybc, stack->port, frm->dinfo, stack->nt, 0); if (frm->dinfo == MISDN_ID_GLOBAL || frm->dinfo == MISDN_ID_DUMMY ) { - struct misdn_bchannel dummybc; cb_log(5,0," --> GLOBAL/DUMMY\n"); - misdn_make_dummy(&dummybc, stack->port, frm->dinfo, stack->nt, 0); - send_msg(glob_mgr->midev, &dummybc, msg); } else { - cb_log(0,0,"No bc for Message\n"); + /* + * We need to be able to at least answer with RELEASE_COMPLETE + * on SETUP|INDICATION errors so use a dummy bc. + */ + cb_log(0,0,"No bc for Message. Using dummy_bc\n"); } + send_msg(glob_mgr->midev, &dummybc, msg); } } }