diff options
-rw-r--r-- | addons/ooh323c/src/oochannels.c | 14 | ||||
-rw-r--r-- | addons/ooh323c/src/ooh245.c | 20 | ||||
-rw-r--r-- | addons/ooh323c/src/ooh323.c | 29 | ||||
-rw-r--r-- | addons/ooh323c/src/ooq931.c | 11 |
4 files changed, 31 insertions, 43 deletions
diff --git a/addons/ooh323c/src/oochannels.c b/addons/ooh323c/src/oochannels.c index e74b75c87..7fa850914 100644 --- a/addons/ooh323c/src/oochannels.c +++ b/addons/ooh323c/src/oochannels.c @@ -146,13 +146,6 @@ int ooCreateH245Connection(OOH323CallData *call) 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 { @@ -489,13 +482,6 @@ int ooAcceptH245Connection(OOH323CallData *call) 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; } 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) diff --git a/addons/ooh323c/src/ooh323.c b/addons/ooh323c/src/ooh323.c index ed097d95e..09df3c9c1 100644 --- a/addons/ooh323c/src/ooh323.c +++ b/addons/ooh323c/src/ooh323.c @@ -1040,10 +1040,6 @@ int ooOnReceivedAlerting(OOH323CallData *call, Q931Message *q931Msg) return OO_FAILED; } } - } else if (!call->pH245Channel && !call->h245listener) { - ret = ooSendStartH245Facility(call); - if (ret != OO_OK) - return ret; } return OO_OK; @@ -1274,10 +1270,6 @@ int ooOnReceivedProgress(OOH323CallData *call, Q931Message *q931Msg) return OO_FAILED; } } - } else if (!call->pH245Channel && !call->h245listener) { - ret = ooSendStartH245Facility(call); - if (ret != OO_OK) - return ret; } return OO_OK; @@ -1572,16 +1564,6 @@ int ooOnReceivedSignalConnect(OOH323CallData* call, Q931Message *q931Msg) 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; @@ -1986,12 +1968,17 @@ int ooHandleStartH245FacilityMessage 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; } diff --git a/addons/ooh323c/src/ooq931.c b/addons/ooh323c/src/ooq931.c index 7e42a22ad..d0233f363 100644 --- a/addons/ooh323c/src/ooq931.c +++ b/addons/ooh323c/src/ooq931.c @@ -1213,14 +1213,6 @@ int ooSendTCSandMSD(OOH323CallData *call) 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; } @@ -1593,6 +1585,9 @@ int ooSendProgress(OOH323CallData *call) 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); |