]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge script <automerge@asterisk.org>
Wed, 27 Sep 2006 13:01:41 +0000 (13:01 +0000)
committerAutomerge script <automerge@asterisk.org>
Wed, 27 Sep 2006 13:01:41 +0000 (13:01 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@43773 65c4cc65-6c06-0410-ace0-fbb531ad65f3

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

index d94b33690edbe1592f3cc8865509ede13d32d774..111a2e121298d6e7df3b2a4d168c3f146e82b079 100644 (file)
@@ -102,7 +102,7 @@ int misdn_jb_empty(struct misdn_jb *jb, char *data, int len);
 
 
 enum misdn_chan_state {
-       MISDN_NOTHING,          /*!< at beginning */
+       MISDN_NOTHING=0,        /*!< at beginning */
        MISDN_WAITING4DIGS, /*!<  when waiting for infos */
        MISDN_EXTCANTMATCH, /*!<  when asterisk couldnt match our ext */
        MISDN_DIALING, /*!<  when pbx_start */
@@ -1651,8 +1651,6 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
                else
                        chan_misdn_log(2,port,"NO OPTS GIVEN\n");
                
-               ch->state=MISDN_CALLING;
-               
                r=misdn_lib_send_event( newbc, EVENT_SETUP );
                
                /** we should have l3id after sending setup **/
@@ -1673,6 +1671,8 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
        ast->hangupcause=16;
        
        if (newbc->nt) stop_bc_tones(ch);
+
+       ch->state=MISDN_CALLING;
        
        return 0; 
 }
@@ -1974,9 +1974,9 @@ static int misdn_hangup(struct ast_channel *ast)
 
        bc=p->bc;
        
-       if (ast->_state == AST_STATE_RESERVED) {
+       if (ast->_state == AST_STATE_RESERVED || p->state == MISDN_NOTHING) {
                /* between request and call */
-               ast_log(LOG_DEBUG, "State Reserved => chanIsAvail\n");
+               ast_log(LOG_DEBUG, "State Reserved (or nothing) => chanIsAvail\n");
                MISDN_ASTERISK_TECH_PVT(ast)=NULL;
                
                cl_dequeue_chan(&cl_te, p);
@@ -3724,10 +3724,10 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
                        cb_log(1,bc->port," --> found holded ch\n");
                        if  (ch->state == MISDN_CONNECTED ) {
                                misdn_transfer_bc(ch, holded_ch) ;
+                               hangup_chan(ch);
+                       //      release_chan(bc);
+                               break;
                        }
-                       hangup_chan(ch);
-                       release_chan(bc);
-                       break;
                }
                
                stop_bc_tones(ch);
index ea7c208492de1bdf2bba565ec8b3a19ab5cd2736..43f3e1ed35a3a564a8e2f9ec20fa24b6ea1da378 100644 (file)
@@ -991,12 +991,6 @@ int setup_bc(struct misdn_bchannel *bc)
                
        } else if ( bc->hdlc ) {
                cb_log(2, stack->port," --> HDLC Mode\n");
-#ifdef ACK_HDLC
-               bc->ack_hdlc=(sem_t*)malloc(sizeof(sem_t));
-               if ( sem_init((sem_t*)bc->ack_hdlc, 1, 0)<0 )
-                       sem_init((sem_t*)bc->ack_hdlc, 0, 0);
-#endif
-               
                pid.protocol[1] = ISDN_PID_L1_B_64HDLC ;
                pid.protocol[2] = ISDN_PID_L2_B_TRANS  ;
                pid.protocol[3] = ISDN_PID_L3_B_USER;
@@ -2475,7 +2469,6 @@ int handle_bchan(msg_t *msg)
 
 #endif
                free_msg(msg);
-               
                return 1;
        case DL_DATA|RESPONSE:
 #if MISDN_DEBUG
@@ -3231,7 +3224,6 @@ int misdn_lib_send_event(struct misdn_bchannel *bc, enum event_e event )
                /*holded_bc->upset=0;
                  holded_bc->active=0;*/
                bc_state_change(holded_bc,BCHAN_CLEANED);
-               
                cb_event( EVENT_NEW_BC, bc,  holded_bc);
        }
        break;
@@ -3940,13 +3932,6 @@ int misdn_lib_tx2misdn_frm(struct misdn_bchannel *bc, void *data, int len)
        
        cb_log(9, stack->port, "Writing %d bytes 2 mISDN\n",len);
        r=mISDN_write(stack->midev, buf, frm->len + mISDN_HEADER_LEN, TIMEOUT_INFINIT);
-#ifdef ACK_HDLC
-       if (bc->hdlc && bc->ack_hdlc) {
-               cb_log(4,stack->port,"Awaiting Acknowledge [%d]\n",len);
-               sem_wait((sem_t*)bc->ack_hdlc);
-               cb_log(4,stack->port,"Acknowledged\n");
-       }
-#endif 
        return 0;
 }
 
index f79bc2ad059ff9396d736d9e38370ebf89706992..44f60dc7e8389dae7b1ec5560ad30227c1830fdc 100644 (file)
@@ -58,7 +58,7 @@ enum tone_e {
 
 
 
-#define MAX_BCHANS 30
+#define MAX_BCHANS 31
 
 enum bchannel_state {
        BCHAN_CLEANED=0,
@@ -211,8 +211,6 @@ struct misdn_bchannel {
        /* int b_addr; */
        int layer_id;
 
-       void *ack_hdlc;
-       
        int layer;
        
        /*state stuff*/