Revision
15906
Author
bottleman
Date
2009-12-11 08:54:12 -0600 (Fri, 11 Dec 2009)

Log Message

move faststart to callproceeding due to some broken hardware not anderstand correclty faststart in progress.

Modified Paths

Diff

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


--- freeswitch/trunk/src/mod/endpoints/mod_h323/changes.txt	2009-12-11 12:18:29 UTC (rev 15905)
+++ freeswitch/trunk/src/mod/endpoints/mod_h323/changes.txt	2009-12-11 14:54:12 UTC (rev 15906)
@@ -1,3 +1,5 @@
+move faststart to callproceeding due to some broken hardware not anderstand 
+    correclty faststart in progress.
 fix rtp timer initialisation.
 implement alerting-indication option and channel variable.
 implement progress-indication option and channel variable.

Modified: freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.cpp (15905 => 15906)


--- freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.cpp	2009-12-11 12:18:29 UTC (rev 15905)
+++ freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.cpp	2009-12-11 14:54:12 UTC (rev 15906)
@@ -1,5 +1,5 @@
 /*
-	Version 0.0.16
+	Version 0.0.17
 */
 
 #include "mod_h323.h"
@@ -777,7 +777,30 @@
 	return true;
 }
 
+bool FSH323Connection::OnReceivedSignalSetup(const H323SignalPDU & setupPDU){
 
+	PTRACE(4, "mod_h323\t======>FSH323Connection::OnReceivedSignalSetup ["<<*this<<"]");
+	
+	if (!H323Connection::OnReceivedSignalSetup(setupPDU)) return false;
+	
+	H323SignalPDU callProceedingPDU;
+	H225_CallProceeding_UUIE & callProceeding = callProceedingPDU.BuildCallProceeding(*this);
+	
+	if (SendFastStartAcknowledge(callProceeding.m_fastStart))
+					callProceeding.IncludeOptionalField(H225_CallProceeding_UUIE::e_fastStart);
+	if (!WriteSignalPDU(callProceedingPDU))
+        return false;
+		
+	return true;		
+}
+
+bool FSH323Connection::OnSendCallProceeding(H323SignalPDU & callProceedingPDU){
+	PTRACE(4, "mod_h323\t======>FSH323Connection::OnSendCallProceeding fastStartState = "<<FastStartStateNames[fastStartState]<<" ["<<*this<<"]");
+	
+	return false;
+//	return true;
+}
+
 bool FSH323Connection::OnSendReleaseComplete(H323SignalPDU & pdu)
 {
 	PTRACE(4, "mod_h323\t======>FSH323Connection::OnSendReleaseComplete cause = "<<pdu.GetQ931().GetCause()<<" value = "<<(switch_call_cause_t)pdu.GetQ931().GetCause());
@@ -840,10 +863,12 @@
 				H323SignalPDU want245PDU;
 				H225_Progress_UUIE & prog = want245PDU.BuildProgress(*this);
 				PBoolean sendPDU = TRUE;
-
-				if (SendFastStartAcknowledge(prog.m_fastStart))
+				PTRACE(2, "H323\tmediaWaitForConnect = FALSE ");
+/*				if (SendFastStartAcknowledge(prog.m_fastStart)){
+					PTRACE(2, "H323\tSendFastStartAcknowledge = TRUE ");
 					prog.IncludeOptionalField(H225_Progress_UUIE::e_fastStart);
-				else {
+				} else {
+					PTRACE(2, "H323\tSendFastStartAcknowledge = FALSE ");
 					// See if aborted call
 					if (connectionState == ShuttingDownConnection){
 						Unlock();
@@ -863,6 +888,7 @@
 					else
 						sendPDU = FALSE;
 				}
+*/				
 				const char *vpi = switch_channel_get_variable(m_fsChannel, "progress-indication"); 
 				unsigned pi = 8;
 				if (vpi){

Modified: freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.h (15905 => 15906)


--- freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.h	2009-12-11 12:18:29 UTC (rev 15905)
+++ freeswitch/trunk/src/mod/endpoints/mod_h323/mod_h323.h	2009-12-11 14:54:12 UTC (rev 15906)
@@ -213,8 +213,10 @@
 	);
 	virtual PBoolean OnStartLogicalChannel(H323Channel& channel);
 	virtual PBoolean OnCreateLogicalChannel(const H323Capability& capability, H323Channel::Directions dir, unsigned& errorCode);
+	virtual	bool OnReceivedSignalSetup(const H323SignalPDU & setupPDU);
 	virtual void OnReceivedReleaseComplete(const H323SignalPDU & pdu);
 	virtual	bool OnReceivedProgress(const H323SignalPDU &);
+	virtual bool OnSendCallProceeding(H323SignalPDU & callProceedingPDU);
 	virtual bool OnSendReleaseComplete(H323SignalPDU & pdu);
 	virtual PBoolean OpenLogicalChannel(const H323Capability& capability, unsigned sessionID, H323Channel::Directions dir);
     void setRemoteAddress(const char* remoteIP, WORD remotePort);