--- ./addons/ooh323c/src/ooh323.c 2010-12-14 23:47:58.000000000 +0300 +++ ../../trunk/./addons/ooh323c/src/ooh323.c 2010-12-15 23:56:44.000000000 +0300 @@ -1582,16 +1582,6 @@ return ret; } } - 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; - } - } } call->callState = OO_CALL_CONNECTED; @@ -2032,12 +2022,17 @@ OO_CLRFLAG (call->flags, OO_M_TUNNELING); /*Establish an H.245 connection */ - ret = ooCreateH245Connection(call); - if(ret != OO_OK) - { + if (!call->pH245Channel) { + ret = ooCreateH245Connection(call); + if(ret != OO_OK) + { OOTRACEERR3("ERROR: Failed to establish an H.245 connection with remote" " endpoint (%s, %s)\n", call->callType, call->callToken); return ret; + } + } else { + OOTRACEINFO3("INFO: H.245 connection already established with remote" + " endpoint (%s, %s)\n", call->callType, call->callToken); } return OO_OK; } --- ./addons/ooh323c/src/oochannels.c 2010-12-14 23:47:58.000000000 +0300 +++ ../../trunk/./addons/ooh323c/src/oochannels.c 2010-12-15 23:57:22.000000000 +0300 @@ -149,13 +149,6 @@ call->callType, call->callToken); return ret; } - ret = ooSendMasterSlaveDetermination(call); - if(ret != OO_OK) - { - OOTRACEERR3("ERROR:Sending Master-slave determination message " - "(%s, %s)\n", call->callType, call->callToken); - return ret; - } } else { @@ -500,13 +493,6 @@ call->callType, call->callToken); return ret; } - ret = ooSendMasterSlaveDetermination(call); - if(ret != OO_OK) - { - OOTRACEERR3("ERROR:Sending Master-slave determination message " - "(%s, %s)\n", call->callType, call->callToken); - return ret; - } return OO_OK; } --- ./addons/ooh323c/src/ooq931.c 2010-12-14 23:47:58.000000000 +0300 +++ ../../trunk/./addons/ooh323c/src/ooq931.c 2010-12-15 23:57:54.000000000 +0300 @@ -1215,14 +1215,6 @@ return ret; } } - 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; - } - } return OO_OK; } @@ -1614,6 +1606,9 @@ OOTRACEERR3("Error: Failed to enqueue Alerting message to outbound queue. (%s, %s)\n", call->callType, call->callToken); } + if (!OO_TESTFLAG(call->flags, OO_M_TUNNELING) && call->h245listener) + ooSendStartH245Facility(call); + ooSendTCSandMSD(call); memReset (call->msgctxt); --- ./addons/ooh323c/src/ooh245.c 2010-12-14 23:47:58.000000000 +0300 +++ ../../trunk/./addons/ooh323c/src/ooh245.c 2010-12-14 23:43:58.000000000 +0300 @@ -2154,10 +2154,20 @@ 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)) @@ -3179,6 +3189,16 @@ 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)