Hard coding the authenticator.Enable (as shown bellow) solves the
registration problem. Obviously this is not good - any ideas why
authenticator.IsCapability returns the wrong result in the "simple"
sample application ?
BOOL H323Gatekeeper::OnReceiveGatekeeperConfirm(const
H225_GatekeeperConfirm & gcf)
{
if (!H225_RAS::OnReceiveGatekeeperConfirm(gcf))
return FALSE;
PINDEX i;
for (i = 0; i < authenticators.GetSize(); i++) {
H235Authenticator & authenticator = authenticators[i];
if (authenticator.UseGkAndEpIdentifiers())
authenticator.SetRemoteId(gatekeeperIdentifier);
}
if (gcf.HasOptionalField(H225_GatekeeperConfirm::e_authenticationMode) &&
gcf.HasOptionalField(H225_GatekeeperConfirm::e_algorithmOID)) {
for (i = 0; i < authenticators.GetSize(); i++) {
H235Authenticator & authenticator = authenticators[i];
authenticator.Enable( TRUE
/*authenticator.IsCapability(gcf.m_authenticationMode, // <<<< This
makes it work
gcf.m_algorithmOID)*/);
PTRACE(4,"RAS\tAuthenticator " << authenticator.GetName()
<< (authenticator.IsActive() ? " ACTIVATED" : "
disabled"));
}
}