aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog5
-rw-r--r--addressbook/backend/pas/pas-backend-ldap.c28
2 files changed, 14 insertions, 19 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 9d442919f2..373a5aa225 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,8 @@
+2001-06-15 Chris Toshok <toshok@ximian.com>
+
+ * backend/pas/pas-backend-ldap.c (search_for_dn): implement this
+ properly, using base and (objectclass=*).
+
2001-06-14 Chris Toshok <toshok@ximian.com>
* contact-editor/e-contact-editor.c (delete_cb): save ourselves a
diff --git a/addressbook/backend/pas/pas-backend-ldap.c b/addressbook/backend/pas/pas-backend-ldap.c
index 4acfaef225..ae683594c5 100644
--- a/addressbook/backend/pas/pas-backend-ldap.c
+++ b/addressbook/backend/pas/pas-backend-ldap.c
@@ -958,29 +958,14 @@ typedef struct {
static ECardSimple *
search_for_dn (PASBackendLDAP *bl, const char *dn)
{
-#if 0
- char **attrs;
-#endif
- char *query;
LDAP *ldap = bl->priv->ldap;
LDAPMessage *res, *e;
ECardSimple *result = NULL;
-#if 0
- /* this is broken because if we (say) modify the cn and can't
- modify the dn (because it overlaps), we lose the ability to
- search by that component of the dn. */
- attrs = ldap_explode_dn (dn, 0);
- query = g_strdup_printf ("(%s)", attrs[0]);
- printf ("searching for %s\n", query);
-#else
- query = g_strdup ("(objectclass=*)");
-#endif
-
if (ldap_search_s (ldap,
- bl->priv->ldap_rootdn,
- bl->priv->ldap_scope,
- query,
+ dn,
+ LDAP_SCOPE_BASE,
+ "(objectclass=*)",
NULL, 0, &res) != -1) {
e = ldap_first_entry (ldap, res);
while (NULL != e) {
@@ -995,7 +980,6 @@ search_for_dn (PASBackendLDAP *bl, const char *dn)
ldap_msgfree(res);
}
- g_free (query);
return result;
}
@@ -1628,6 +1612,12 @@ func_is(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
*list = g_list_prepend(*list,
g_strdup_printf("(%s=%s)",
ldap_attr, str));
+ else {
+ g_warning ("unknown query property\n");
+ /* we want something that'll always be false */
+ *list = g_list_prepend(*list,
+ g_strdup("objectClass=MyBarnIsBiggerThanYourBarn"));
+ }
}
r = e_sexp_result_new(f, ESEXP_RES_BOOL);