From 5cd18284676cf1e112a612fc44988a92527fb791 Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Tue, 7 Mar 2006 12:17:35 +0000 Subject: 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 --- channels/chan_misdn.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'channels/chan_misdn.c') 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; } -- cgit v1.2.3