summaryrefslogtreecommitdiffstats
path: root/ldap/servers/plugins/replication/windows_connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/servers/plugins/replication/windows_connection.c')
-rw-r--r--ldap/servers/plugins/replication/windows_connection.c37
1 files changed, 23 insertions, 14 deletions
diff --git a/ldap/servers/plugins/replication/windows_connection.c b/ldap/servers/plugins/replication/windows_connection.c
index 01b61cf9..b9643b5f 100644
--- a/ldap/servers/plugins/replication/windows_connection.c
+++ b/ldap/servers/plugins/replication/windows_connection.c
@@ -53,7 +53,9 @@ replica locked. Seems like right thing to do.
#include "repl5.h"
#include "windowsrepl.h"
+#if !defined(USE_OPENLDAP)
#include "ldappr.h"
+#endif
#include "slap.h"
#include "nss.h"
@@ -352,7 +354,7 @@ windows_perform_operation(Repl_Connection *conn, int optype, const char *dn,
if (0 == rc)
{
/* Timeout */
- rc = ldap_get_lderrno(conn->ld, NULL, NULL);
+ rc = slapi_ldap_get_lderrno(conn->ld, NULL, NULL);
conn->last_ldap_error = LDAP_TIMEOUT;
return_value = CONN_TIMEOUT;
}
@@ -361,7 +363,7 @@ windows_perform_operation(Repl_Connection *conn, int optype, const char *dn,
/* Error */
char *s = NULL;
- rc = ldap_get_lderrno(conn->ld, NULL, &s);
+ rc = slapi_ldap_get_lderrno(conn->ld, NULL, &s);
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
"%s: Received error %d: %s for %s operation\n",
agmt_get_long_name(conn->agmt),
@@ -591,7 +593,7 @@ windows_LDAPMessage2Entry(Repl_Connection *conn, LDAPMessage * msg, int attrsonl
}
if ( NULL != ber )
{
- ldap_ber_free( ber, 0 );
+ ber_free( ber, 0 );
}
windows_private_set_raw_entry(conn->agmt, rawentry); /* windows private now owns rawentry */
@@ -1214,7 +1216,9 @@ windows_conn_connect(Repl_Connection *conn)
}
if (return_value == CONN_OPERATION_SUCCESS) {
+#if !defined(USE_OPENLDAP)
int io_timeout_ms;
+#endif
/* Now we initialize the LDAP Structure and set options */
slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
@@ -1260,10 +1264,13 @@ windows_conn_connect(Repl_Connection *conn)
ldap_set_option(conn->ld, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
/* override the default timeout with the specified timeout */
+#if defined(USE_OPENLDAP)
+ ldap_set_option(conn->ld, LDAP_OPT_NETWORK_TIMEOUT, &conn->timeout);
+#else
io_timeout_ms = conn->timeout.tv_sec * 1000 + conn->timeout.tv_usec / 1000;
prldap_set_session_option(conn->ld, NULL, PRLDAP_OPT_IO_MAX_TIMEOUT,
io_timeout_ms);
-
+#endif
/* We've got an ld. Now bind to the server. */
conn->last_operation = CONN_BIND;
@@ -1271,7 +1278,7 @@ windows_conn_connect(Repl_Connection *conn)
if ( bind_and_check_pwp(conn, binddn, conn->plain) == CONN_OPERATION_FAILED )
{
- conn->last_ldap_error = ldap_get_lderrno (conn->ld, NULL, NULL);
+ conn->last_ldap_error = slapi_ldap_get_lderrno (conn->ld, NULL, NULL);
conn->state = STATE_DISCONNECTED;
return_value = CONN_OPERATION_FAILED;
}
@@ -1594,6 +1601,7 @@ attribute_string_value_present(LDAP *ld, LDAPMessage *entry, const char *type,
const char *value)
{
int return_value = 0;
+ ber_len_t vallen;
LDAPDebug( LDAP_DEBUG_TRACE, "=> attribute_string_value_present\n", 0, 0, 0 );
@@ -1602,30 +1610,31 @@ attribute_string_value_present(LDAP *ld, LDAPMessage *entry, const char *type,
char *atype = NULL;
BerElement *ber = NULL;
+ vallen = strlen(value);
atype = ldap_first_attribute(ld, entry, &ber);
while (NULL != atype && 0 == return_value)
{
if (strcasecmp(atype, type) == 0)
{
- char **strvals = ldap_get_values(ld, entry, atype);
+ struct berval **vals = ldap_get_values_len(ld, entry, atype);
int i;
- for (i = 0; return_value == 0 && NULL != strvals && NULL != strvals[i]; i++)
+ for (i = 0; return_value == 0 && NULL != vals && NULL != vals[i]; i++)
{
- if (strcmp(strvals[i], value) == 0)
+ if ((vallen == vals[i]->bv_len) && !strncmp(vals[i]->bv_val, value, vallen))
{
return_value = 1;
}
}
- if (NULL != strvals)
+ if (NULL != vals)
{
- ldap_value_free(strvals);
+ ldap_value_free_len(vals);
}
}
ldap_memfree(atype);
atype = ldap_next_attribute(ld, entry, ber);
}
if (NULL != ber)
- ldap_ber_free(ber, 0);
+ ber_free(ber, 0);
/* The last atype has not been freed yet */
if (NULL != atype)
ldap_memfree(atype);
@@ -1768,7 +1777,7 @@ bind_and_check_pwp(Repl_Connection *conn, char * binddn, char *password)
char *errmsg = NULL;
conn->last_ldap_error = rc;
/* errmsg is a pointer directly into the ld structure - do not free */
- rc = ldap_get_lderrno( ld, NULL, &errmsg );
+ rc = slapi_ldap_get_lderrno( ld, NULL, &errmsg );
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
"%s: Replication bind with %s auth failed: LDAP error %d (%s) (%s)\n",
agmt_get_long_name(conn->agmt),
@@ -1816,13 +1825,13 @@ do_simple_bind (Repl_Connection *conn, LDAP *ld, char * binddn, char *password)
LDAPDebug( LDAP_DEBUG_TRACE, "=> do_simple_bind\n", 0, 0, 0 );
- if( ( msgid = ldap_simple_bind( ld, binddn, password ) ) == -1 )
+ if( ( msgid = slapi_ldap_bind( ld, binddn, password, LDAP_SASL_SIMPLE, NULL, NULL, NULL, &msgid ) ) == -1 )
{
char *ldaperrtext = NULL;
int ldaperr;
int prerr = PR_GetError();
- ldaperr = ldap_get_lderrno( ld, NULL, &ldaperrtext );
+ ldaperr = slapi_ldap_get_lderrno( ld, NULL, &ldaperrtext );
/* Do not report the same error over and over again */
if (conn->last_ldap_error != ldaperr)
{