summaryrefslogtreecommitdiff
path: root/channels/chan_misdn.c
diff options
context:
space:
mode:
authorChristian Richter <christian.richter@beronet.com>2006-03-07 12:17:35 +0000
committerChristian Richter <christian.richter@beronet.com>2006-03-07 12:17:35 +0000
commit5cd18284676cf1e112a612fc44988a92527fb791 (patch)
tree391f7600410a8ce7df9de1081cd0e4a07d653068 /channels/chan_misdn.c
parentbcbcdaa67cc34d5cfe421adc46728041ed292c7a (diff)
when receiving disconnect with inband info, we don't send release immediately, we also don't inform asterisk with hangup or congestion, since we want to hear the inband message.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@12315 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_misdn.c')
-rw-r--r--channels/chan_misdn.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index 4d61f0545..f4e204b92 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -130,6 +130,7 @@ enum misdn_chan_state {
MISDN_ALERTING, /*!< when Alerting */
MISDN_BUSY, /*!< when BUSY */
MISDN_CONNECTED, /*!< when connected */
+ MISDN_DISCONNECTED, /*!< when connected */
MISDN_BRIDGED, /*!< when bridged */
MISDN_CLEANING, /*!< when hangup from * but we were connected before */
MISDN_HUNGUP_FROM_MISDN, /*!< when DISCONNECT/RELEASE/REL_COMP cam from misdn */
@@ -1929,6 +1930,11 @@ static int misdn_hangup(struct ast_channel *ast)
p->state=MISDN_CLEANING; /* MISDN_HUNGUP_FROM_AST; */
break;
+ case MISDN_DISCONNECTED:
+ chan_misdn_log(2, bc->port, " --> * State Disconnected\n");
+ misdn_lib_send_event( bc, EVENT_RELEASE);
+ p->state=MISDN_CLEANING; /* MISDN_HUNGUP_FROM_AST; */
+ break;
case MISDN_CLEANING:
break;
@@ -2936,9 +2942,14 @@ static void send_cause2ast(struct ast_channel *ast, struct misdn_bchannel*bc) {
case 4:
case 22:
case 27:
+ /*
+ * Not Queueing the Congestion anymore, since we want to hear
+ * the inband message
+ *
chan_misdn_log(1, bc?bc->port:0, " --> * SEND: Queue Congestion pid:%d\n", bc?bc->pid:-1);
ast_queue_control(ast, AST_CONTROL_CONGESTION);
+ */
break;
case 21:
@@ -3424,6 +3435,8 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data)
dialled number, or perhaps even giving an
alternative number, then play it instead of
immediately releasing the call */
+ chan_misdn_log(0,bc->port, " --> Inband Info Avail, not sending RELEASE\n");
+ ch->state = MISDN_DISCONNECTED;
start_bc_tones(ch);
break;
}