- minor correction in ldap-api patch for backward compatibility

This commit is contained in:
Adam Tkac 2007-05-22 14:49:04 +00:00
parent 96fffb4804
commit af78c8d4b9
1 changed files with 28 additions and 21 deletions

View File

@ -1,5 +1,5 @@
--- bind-9.4.1/contrib/sdb/ldap/ldapdb.c.new-api 2004-08-27 02:10:25.000000000 +0200
+++ bind-9.4.1/contrib/sdb/ldap/ldapdb.c 2007-05-21 15:22:10.000000000 +0200
+++ bind-9.4.1/contrib/sdb/ldap/ldapdb.c 2007-05-22 16:50:16.000000000 +0200
@@ -58,9 +58,13 @@
static dns_sdbimplementation_t *ldapdb = NULL;
@ -26,25 +26,32 @@
threaddata->data = conndata->next;
free(conndata);
}
@@ -172,14 +180,14 @@ ldapdb_getconn(struct ldapdb_data *data)
@@ -172,14 +180,23 @@ ldapdb_getconn(struct ldapdb_data *data)
/* threaddata points at the connection list for current thread */
/* look for existing connection to our server */
conndata = ldapdb_find((struct ldapdb_entry *)threaddata->data,
- data->hostport, strlen(data->hostport));
+ data->lud->lud_host, strlen(data->lud->lud_host));
+#if LDAP_API_VERSION < 3001
+ data->hostport, strlen(data->hostport));
+#else
+ data->lud->lud_host, strlen(data->lud->lud_host));
+#endif
if (conndata == NULL) {
/* no connection data structure for this server, create one */
conndata = malloc(sizeof(*conndata));
if (conndata == NULL)
return (NULL);
- conndata->index = data->hostport;
- conndata->size = strlen(data->hostport);
+#if LDAP_API_VERSION < 3001
conndata->index = data->hostport;
conndata->size = strlen(data->hostport);
+#else
+ conndata->index = data->lud->lud_host;
+ conndata->size = strlen(data->lud->lud_host);
+#endif
conndata->data = NULL;
ldapdb_insert((struct ldapdb_entry **)&threaddata->data,
conndata);
@@ -196,9 +204,15 @@ ldapdb_bind(struct ldapdb_data *data, LD
@@ -196,9 +213,15 @@ ldapdb_bind(struct ldapdb_data *data, LD
#endif
if (*ldp != NULL)
@ -60,7 +67,7 @@
return;
#ifndef LDAPDB_RFC1823API
@@ -211,8 +225,17 @@ ldapdb_bind(struct ldapdb_data *data, LD
@@ -211,8 +234,17 @@ ldapdb_bind(struct ldapdb_data *data, LD
}
#endif
@ -78,7 +85,7 @@
*ldp = NULL;
}
}
@@ -224,14 +247,19 @@ ldapdb_search(const char *zone, const ch
@@ -224,14 +256,19 @@ ldapdb_search(const char *zone, const ch
isc_result_t result = ISC_R_NOTFOUND;
LDAP **ldp;
LDAPMessage *res, *e;
@ -100,7 +107,7 @@
ldp = ldapdb_getconn(data);
if (ldp == NULL)
@@ -256,12 +284,21 @@ ldapdb_search(const char *zone, const ch
@@ -256,12 +293,21 @@ ldapdb_search(const char *zone, const ch
sprintf(data->filtername, "%s))", name);
fltr = data->filterone;
}
@ -123,7 +130,7 @@
}
if (*ldp == NULL || msgid == -1) {
@@ -293,15 +330,27 @@ ldapdb_search(const char *zone, const ch
@@ -293,15 +339,27 @@ ldapdb_search(const char *zone, const ch
}
if (name == NULL) {
@ -152,7 +159,7 @@
}
for (a = ldap_first_attribute(ld, e, &ptr); a != NULL; a = ldap_next_attribute(ld, e, ptr)) {
@@ -319,34 +368,60 @@ ldapdb_search(const char *zone, const ch
@@ -319,34 +377,60 @@ ldapdb_search(const char *zone, const ch
strncpy(type, a, s - a);
type[s - a] = '\0';
@ -214,7 +221,7 @@
}
#ifndef LDAPDB_RFC1823API
ldap_memfree(a);
@@ -357,7 +432,11 @@ ldapdb_search(const char *zone, const ch
@@ -357,7 +441,11 @@ ldapdb_search(const char *zone, const ch
ber_free(ptr, 0);
#endif
if (name == NULL)
@ -226,7 +233,7 @@
/* free this result */
ldap_msgfree(res);
@@ -460,10 +539,15 @@ parseextensions(char *extensions, struct
@@ -460,10 +548,15 @@ parseextensions(char *extensions, struct
static void
free_data(struct ldapdb_data *data)
{
@ -242,7 +249,7 @@
if (data->filterall != NULL)
isc_mem_put(ns_g_mctx, data->filterall, data->filteralllen);
if (data->filterone != NULL)
@@ -478,7 +562,7 @@ ldapdb_create(const char *zone, int argc
@@ -478,7 +571,7 @@ ldapdb_create(const char *zone, int argc
{
struct ldapdb_data *data;
char *s, *filter = NULL, *extensions = NULL;
@ -251,7 +258,7 @@
UNUSED(driverdata);
@@ -486,7 +570,10 @@ ldapdb_create(const char *zone, int argc
@@ -486,7 +579,10 @@ ldapdb_create(const char *zone, int argc
/* want to do this only once for all instances */
if ((argc < 2)
@ -262,7 +269,7 @@
|| ((defaultttl = atoi(argv[1])) < 1))
return (ISC_R_FAILURE);
data = isc_mem_get(ns_g_mctx, sizeof(struct ldapdb_data));
@@ -494,14 +581,15 @@ ldapdb_create(const char *zone, int argc
@@ -494,14 +590,15 @@ ldapdb_create(const char *zone, int argc
return (ISC_R_NOMEMORY);
memset(data, 0, sizeof(struct ldapdb_data));
@ -280,7 +287,7 @@
s = strchr(data->hostport, '/');
if (s != NULL) {
*s++ = '\0';
@@ -544,11 +632,26 @@ ldapdb_create(const char *zone, int argc
@@ -544,11 +641,26 @@ ldapdb_create(const char *zone, int argc
}
}
@ -307,7 +314,7 @@
if (err < 0) {
/* err should be -1 or -2 */
free_data(data);
@@ -562,6 +665,14 @@ ldapdb_create(const char *zone, int argc
@@ -562,6 +674,14 @@ ldapdb_create(const char *zone, int argc
return (ISC_R_FAILURE);
}
}
@ -322,7 +329,7 @@
if ((data->base != NULL && unhex(data->base) == NULL) ||
(filter != NULL && unhex(filter) == NULL) ||
@@ -572,6 +683,7 @@ ldapdb_create(const char *zone, int argc
@@ -572,6 +692,7 @@ ldapdb_create(const char *zone, int argc
"LDAP sdb zone '%s': URL: bad hex values", zone);
return (ISC_R_FAILURE);
}
@ -330,7 +337,7 @@
/* compute filterall and filterone once and for all */
if (filter == NULL) {
@@ -602,6 +714,7 @@ ldapdb_create(const char *zone, int argc
@@ -602,6 +723,7 @@ ldapdb_create(const char *zone, int argc
}
data->filtername = data->filterone + strlen(data->filterone);
@ -338,7 +345,7 @@
/* support URLs with literal IPv6 addresses */
data->hostname = isc_mem_strdup(ns_g_mctx, data->hostport + (*data->hostport == '[' ? 1 : 0));
if (data->hostname == NULL) {
@@ -620,8 +733,10 @@ ldapdb_create(const char *zone, int argc
@@ -620,8 +742,10 @@ ldapdb_create(const char *zone, int argc
data->portno = atoi(s);
} else
data->portno = LDAP_PORT;