summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}