Я использую openldap-servers-2.4.40-16
на сервере CentOS 6 и связываю его с помощью флага -lldap
при сборке в C ++. Я использую функцию startTLS (ldap_start_tls_s) для запуска соединения TLS через порт ldap (389). Эта функция прекрасно работает во время нашего тестирования, но во время выполнения происходит прерывистый сбой.
CALLSTCK: (Static functions may not be resolved correctly, as they are resolved to the nearest symbol)
[0] 0x00002AAAB2590FCC sqloPGRPRegisterOneCrash + 0x20C
[1] 0x00002AAAB26EE312 sqloEDUCodeTrapHandler + 0xB22
[2] 0x00002AAAAACDD7E0 /lib64/libpthread.so.0 + 0xF7E0
[3] 0x000000367380F8D0 PR_GetIdentitiesLayer + 0x30
[4] 0x00002AAAE1AFFF0F /usr/lib64/libssl3.so + 0x2BF0F
[5] 0x00002AAAE1B030E5 /usr/lib64/libssl3.so + 0x2F0E5
[6] 0x000000367D83719D /lib64/libldap-2.4.so.2 + 0x3719D
[7] 0x000000367D835754 /lib64/libldap-2.4.so.2 + 0x35754
[8] 0x000000367D8358D5 /lib64/libldap-2.4.so.2 + 0x358D5
[9] 0x000000367D835ADE ldap_int_tls_start + 0x6E
[10] 0x000000367D835C4E ldap_start_tls_s + 0xBE
[11] 0x00002AAAE16A6F7F initLDAP + 0x34F
[12] 0x00002AAAE16A5DC6 _Z10FindGroupsPKciS0_iS0_iiS0_iPviiS0_iPS1_PiPPcS3_ + 0x293
[13] 0x00002AAAB0C94775 _Z16getgroupsforuserPciS_iS_iiS_iPviiS_iP14sqlo_mem_descrP17group_functions_1 + 0x365
[14] 0x00002AAAB0C94050 _Z21sqlexGetGroupsForUserPciS_iS_iiS_iPviiS_iP14sqlo_mem_descrP9sqlf_kcfd + 0x2B0
[15] 0x00002AAAB0CE48A1 _Z20sqlexSlsSystemAccrdbP14db2UCinterface + 0x121
[16] 0x00002AAAB0CD27F9 _Z20sqlexEngAuthenticateP14db2UCinterface + 0xF49
[17] 0x00002AAAB08B75A0 _ZN14sqeApplication13AppLocalStartEP14db2UCinterface + 0x370
[18] 0x00002AAAB0C5559F _Z11sqlelostWrpP14db2UCinterface + 0x4F
Ниже приведен фрагмент кода, который я использую:
switch( rc )
{
case LDAP_SUCCESS:
break;
case LDAP_CONNECT_ERROR:
ldap_rc = ldap_get_option( *ld, LDAP_OPT_DIAGNOSTIC_MESSAGE, (void*)&ldapErrMsg);
if (ldap_rc != LDAP_SUCCESS)
{
snprintf(dumpMsg, MAX_ERROR_MSG_SIZE, "InitLDAP: ldap_start_tls_s() CONNECT AND MEMORY ERROR ldap_rc = %d",
ldap_rc );
*errorMsg = strdup(dumpMsg);
rc = PLUGIN_NETWORKERROR;
goto exit;
}
snprintf( dumpMsg, MAX_ERROR_MSG_SIZE, "InitLDAP: ldap_start_tls_s() %s uri %s\n", ldapErrMsg, uri);
*errorMsg = strdup(dumpMsg);
rc = PLUGIN_NETWORKERROR;
goto exit;
default:
snprintf( dumpMsg, MAX_ERROR_MSG_SIZE, "InitLDAP: ldap_start_tls_s(): %s\n", ldap_err2string(rc) );
goto exit;
};
Ошибка прерывистая, котораячто делает его очень трудным для отладки, любая помощь очень ценится.