]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 376951 via svnmerge from
authorAutomerge script <automerge@asterisk.org>
Fri, 30 Nov 2012 22:25:29 +0000 (22:25 +0000)
committerAutomerge script <automerge@asterisk.org>
Fri, 30 Nov 2012 22:25:29 +0000 (22:25 +0000)
file:///srv/subversion/repos/asterisk/branches/10

................
  r376951 | rmudgett | 2012-11-30 15:33:38 -0600 (Fri, 30 Nov 2012) | 18 lines

  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/branches/10-digiumphones@376982 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/misdn/isdn_lib.c

index 42bbd8f8fb05fdcc3dcf0c2b84e9364cd7cd8f3e..8dcf41faab4d5b6907e4664b854b03746bb878c6 100644 (file)
@@ -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);
                                        }
                                }
                        }