]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add PI handling in alerting.
authorGeorgiewskiy Yuriy <bottleman@icf.org.ru>
Sat, 12 Dec 2009 16:33:38 +0000 (16:33 +0000)
committerGeorgiewskiy Yuriy <bottleman@icf.org.ru>
Sat, 12 Dec 2009 16:33:38 +0000 (16:33 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15936 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_h323/changes.txt
src/mod/endpoints/mod_h323/mod_h323.cpp

index 4a016a696d5478e7442446eb643c9cc67d0623a3..f70a94bfaea57a25514f3646b241a97d75a887e5 100644 (file)
@@ -1,3 +1,4 @@
+add PI handling in alerting.
 fix slow start handling
 move faststart to callproceeding due to some broken hardware not anderstand 
     correclty faststart in progress.
index e1069a1334443ef81b8b2703441e05275c6fad00..6516f430dc0c6ff8fa4d996cbc638553d049c738 100644 (file)
@@ -1,5 +1,5 @@
 /*
-       Version 0.0.18
+       Version 0.0.19
 */
 
 #include "mod_h323.h"
@@ -857,10 +857,22 @@ bool FSH323Connection::OnReceivedCapabilitySet(const H323Capabilities & remoteCa
 
 
 bool FSH323Connection::OnAlerting(const H323SignalPDU &alertingPDU, const PString &user){
-
+       
        PTRACE(4, "mod_h323\t======>PFSH323Connection::OnAlerting user = "<<(const char *)user<<" ["<<*this<<"]");
+       unsigned pi;
        switch_status_t status = switch_channel_mark_ring_ready(m_fsChannel);
        PTRACE(4, "mod_h323\t----------->OnAlerting return = "<<status);
+       
+       if (!alertingPDU.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 ( status == SWITCH_STATUS_SUCCESS);
 }
 
@@ -1530,7 +1542,7 @@ FSH323Connection * FSH323EndPoint::FSMakeCall(const PString & dest, void *userDa
 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;