aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addons/ooh323c/src/oochannels.c14
-rw-r--r--addons/ooh323c/src/ooh245.c20
-rw-r--r--addons/ooh323c/src/ooh323.c29
-rw-r--r--addons/ooh323c/src/ooq931.c11
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);