summaryrefslogtreecommitdiff
path: root/addons/ooh323c/src/ooh245.c
diff options
context:
space:
mode:
authorAlexandr Anikin <may@telecom-service.ru>2010-12-25 16:35:09 +0000
committerAlexandr Anikin <may@telecom-service.ru>2010-12-25 16:35:09 +0000
commit5504173bf8e95ebdfbe86774b76abf7946dbbaa6 (patch)
tree6c63887cb85962e7483901e235677ae716599470 /addons/ooh323c/src/ooh245.c
parentac87fc136db80a11ee458dc8c597a820d74bfdbd (diff)
Change order of sending TCS and MSD packets
Change order of sending Terminal Capability Set and MasterSlave Determination packets, MSD send when TCS exchange procedure is done (we send tcs ack to remote and we have remote tcs ack already or we receive tcs ack from remote and we have send our tcs ack to remote already). Some endpoints can work in this sequence only, i suggest they can't work with both (tcs and msd) exchange procedures simultaneously. Also changed StartH245 facility message sending. It send on incoming calls only due to some endpoints can't proccess properly this facility messages on their incoming calls. (closes issue #18433) Reported by: MrHanMan Patches: tcs-msd-h245-3.patch uploaded by may213 (license 454) Tested by: MrHanMan, may213 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@299715 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'addons/ooh323c/src/ooh245.c')
-rw-r--r--addons/ooh323c/src/ooh245.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/addons/ooh323c/src/ooh245.c b/addons/ooh323c/src/ooh245.c
index adbe1842e..d993c9ed2 100644
--- a/addons/ooh323c/src/ooh245.c
+++ b/addons/ooh323c/src/ooh245.c
@@ -2102,10 +2102,20 @@ int ooHandleH245Command(OOH323CallData *call,
int ooOnReceivedTerminalCapabilitySetAck(OOH323CallData* call)
{
+ int ret = OO_OK;
call->localTermCapState = OO_LocalTermCapSetAckRecvd;
if(call->remoteTermCapState != OO_RemoteTermCapSetAckSent)
return OO_OK;
+ if(call->masterSlaveState == OO_MasterSlave_Idle) {
+ ret = ooSendMasterSlaveDetermination(call);
+ if(ret != OO_OK) {
+ OOTRACEERR3("ERROR:Sending Master-slave determination message "
+ "(%s, %s)\n", call->callType, call->callToken);
+ return ret;
+ }
+ }
+
if((call->masterSlaveState == OO_MasterSlave_Master ||
call->masterSlaveState == OO_MasterSlave_Slave) &&
(call->msAckStatus == OO_msAck_remoteReceived))
@@ -3127,6 +3137,16 @@ int ooOnReceivedTerminalCapabilitySet(OOH323CallData *call, H245Message *pmsg)
call->localTermCapState != OO_LocalTermCapSetAckRecvd)
return OO_OK;
+ if(call->masterSlaveState == OO_MasterSlave_Idle) {
+ ret = ooSendMasterSlaveDetermination(call);
+ if(ret != OO_OK) {
+ OOTRACEERR3("ERROR:Sending Master-slave determination message "
+ "(%s, %s)\n", call->callType, call->callToken);
+ return ret;
+ }
+ }
+
+
/* Check MasterSlave procedure has finished */
if(call->masterSlaveState != OO_MasterSlave_Master &&
call->masterSlaveState != OO_MasterSlave_Slave)