fixed hicom busy bug, we now see if the systemphone is busy, also fixed the immediate...
authorChristian Richter <christian.richter@beronet.com>
Mon, 27 Mar 2006 10:13:11 +0000 (10:13 +0000)
committerChristian Richter <christian.richter@beronet.com>
Mon, 27 Mar 2006 10:13:11 +0000 (10:13 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@15220 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_misdn.c
channels/misdn/isdn_lib.c

index 96b1fa4..ba9aacc 100644 (file)
@@ -3324,6 +3324,16 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
                        
                }
 
+               /* check if we should jump into s when we have no dad */
+               {
+                       int im;
+                       misdn_cfg_get( bc->port, MISDN_CFG_IMMEDIATE, &im, sizeof(im));
+                       if ( im && ast_strlen_zero(bc->dad) ) {
+                               do_immediate_setup(bc, ch , chan);
+                               break;
+                       }
+               }
+
                
                        chan_misdn_log(5,bc->port,"CONTEXT:%s\n",ch->context);
                        if(!ast_canmatch_extension(ch->ast, ch->context, bc->dad, 1, bc->oad)) {
index b0e9477..bb4da69 100644 (file)
@@ -1553,6 +1553,7 @@ handle_event_nt(void *dat, void *arg)
        manager_t *mgr = (manager_t *)dat;
        msg_t *msg = (msg_t *)arg;
        mISDNuser_head_t *hh;
+       int reject=0;
 
        struct misdn_stack *stack=find_stack_by_mgr(mgr);
        int port;
@@ -1681,8 +1682,8 @@ handle_event_nt(void *dat, void *arg)
                                if (bc) { 
                                        int myprocid=bc->l3_id&0x0000ffff;
                                        hh->dinfo=(hh->dinfo&0xffff0000)|myprocid;
-                                       cb_log(3,stack->port,"Repaired reject Bug, new dinfo: %x\n",hh->dinfo);
-                                       return 0;
+                                       cb_log(3,stack->port,"Reject dinfo: %x cause:%d\n",hh->dinfo,bc->cause);
+                                       reject=1;               
                                }
                        }
                }
@@ -1833,9 +1834,18 @@ handle_event_nt(void *dat, void *arg)
                        if(!isdn_get_info(msgs_g,event,1)) {
                                cb_log(4, stack->port, "Unknown Event Ind: prim %x dinfo %x\n",hh->prim, hh->dinfo);
                        } else {
+                               if (reject) {
+                                       switch(bc->cause){
+                                               case 17:
+                                                       cb_log(1, stack->port, "Siemens Busy reject..\n");
+
+                                                       break;
+                                               default:
+                                                       return 0;
+                                       }
+                               }
                                cb_event(event, bc, glob_mgr->user_data);
                        }
-
       
                } else {
                        cb_log(4, stack->port, "No BC found with l3id: prim %x dinfo %x\n",hh->prim, hh->dinfo);