aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorroot <root@f38db490-d61c-443f-a65b-d21fe96a405b>2006-09-27 13:01:41 +0000
committerroot <root@f38db490-d61c-443f-a65b-d21fe96a405b>2006-09-27 13:01:41 +0000
commit8bc90f4489d202be55ada37b5674775b2a15f471 (patch)
tree90c498ef7649782a0e66f5daf8fe4058b3fc6f91 /channels
parentc0c87c56a59bab183e130ebb990850f326285ed0 (diff)
automerge commit
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2-netsec@43773 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_misdn.c16
-rw-r--r--channels/misdn/isdn_lib.c15
-rw-r--r--channels/misdn/isdn_lib.h4
3 files changed, 9 insertions, 26 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index d94b33690..111a2e121 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -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);
diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c
index ea7c20849..43f3e1ed3 100644
--- a/channels/misdn/isdn_lib.c
+++ b/channels/misdn/isdn_lib.c
@@ -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;
}
diff --git a/channels/misdn/isdn_lib.h b/channels/misdn/isdn_lib.h
index f79bc2ad0..44f60dc7e 100644
--- a/channels/misdn/isdn_lib.h
+++ b/channels/misdn/isdn_lib.h
@@ -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*/