Revision
15937
Author
bottleman
Date
2009-12-12 10:48:50 -0600 (Sat, 12 Dec 2009)

Log Message

add PI handling in Call Proceeding

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/endpoints/mod_h323/changes.txt (15936 => 15937)


--- freeswitch/trunk/src/mod/endpoints/mod_h323/changes.txt	2009-12-12 16:33:38 UTC (rev 15936)
+++ freeswitch/trunk/src/mod/endpoints/mod_h323/changes.txt	2009-12-12 16:48:50 UTC (rev 15937)
@@ -1,3 +1,4 @@
+add PI handling in Call Proceeding.
 add PI handling in alerting.
 fix slow start handling
 move faststart to callproceeding due to some broken hardware not anderstand 

Modified: freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.cpp (15936 => 15937)


--- freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.cpp	2009-12-12 16:33:38 UTC (rev 15936)
+++ freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.cpp	2009-12-12 16:48:50 UTC (rev 15937)
@@ -1,5 +1,5 @@
 /*
-	Version 0.0.19
+	Version 0.0.20
 */
 
 #include "mod_h323.h"
@@ -809,6 +809,24 @@
 	return true;		
 }
 
+bool FSH323Connection::OnReceivedCallProceeding(const H323SignalPDU & pdu){
+	PTRACE(4, "mod_h323\t======>PFSH323Connection::OnReceivedCallProceeding ["<<*this<<"]");
+	unsigned pi;
+
+	
+	if (!pdu.GetQ931().GetProgressIndicator(pi))
+		pi = 0;
+	PTRACE(4, "mod_h323\t----------->OnAlerting PI = "<<pi);
+	if (pi > 0){
+		if ((m_rxChennel && m_txChennel) || (m_ChennelProgress && m_rxChennel))
+			switch_channel_mark_pre_answered(m_fsChannel);
+		else{
+			m_ChennelProgress = true;
+		}
+	}
+	return H323Connection::OnReceivedCallProceeding(pdu);
+}
+
 bool FSH323Connection::OnSendCallProceeding(H323SignalPDU & callProceedingPDU){
 	PTRACE(4, "mod_h323\t======>FSH323Connection::OnSendCallProceeding fastStartState = "<<FastStartStateNames[fastStartState]<<" ["<<*this<<"]");
 	
@@ -1542,7 +1560,7 @@
 static switch_call_cause_t create_outgoing_channel(switch_core_session_t *session,
                                                    switch_event_t *var_event,
                                                    switch_caller_profile_t *outbound_profile,
-                                                   switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags,switch_call_cause_t *cancel_cause){
+                                                   switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags, switch_call_cause_t *cancel_cause){
 	PTRACE(4, "mod_h323\t======>create_outgoing_channel DST NUMBER = "<<outbound_profile->destination_number);
 	
 	FSH323Connection * connection;

Modified: freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.h (15936 => 15937)


--- freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.h	2009-12-12 16:33:38 UTC (rev 15936)
+++ freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.h	2009-12-12 16:48:50 UTC (rev 15937)
@@ -214,6 +214,7 @@
 	virtual PBoolean OnStartLogicalChannel(H323Channel& channel);
 	virtual PBoolean OnCreateLogicalChannel(const H323Capability& capability, H323Channel::Directions dir, unsigned& errorCode);
 	virtual	bool OnReceivedSignalSetup(const H323SignalPDU & setupPDU);
+	virtual	bool OnReceivedCallProceeding(const H323SignalPDU & pdu);
 	virtual void OnReceivedReleaseComplete(const H323SignalPDU & pdu);
 	virtual	bool OnReceivedProgress(const H323SignalPDU &);
 	virtual bool OnSendCallProceeding(H323SignalPDU & callProceedingPDU);