Improve some LDAP authentication error messages
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 3 Oct 2012 03:25:05 +0000 (23:25 -0400)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 3 Oct 2012 03:25:05 +0000 (23:25 -0400)
src/backend/libpq/auth.c

index 74036e2493b4ad9e3304b19bd78d3753ed9519ca..ca470e18835b531817673d656ae5b5fe8c293f3d 100644 (file)
@@ -2161,6 +2161,7 @@ CheckLDAPAuth(Port *port)
        char       *attributes[2];
        char       *dn;
        char       *c;
+       int         count;
 
        /*
         * Disallow any characters that we would otherwise need to escape,
@@ -2223,17 +2224,21 @@ CheckLDAPAuth(Port *port)
            return STATUS_ERROR;
        }
 
-       if (ldap_count_entries(ldap, search_message) != 1)
+       count = ldap_count_entries(ldap, search_message);
+       if (count != 1)
        {
-           if (ldap_count_entries(ldap, search_message) == 0)
+           if (count == 0)
                ereport(LOG,
-                       (errmsg("LDAP search failed for filter \"%s\" on server \"%s\": no such user",
-                               filter, port->hba->ldapserver)));
+                       (errmsg("LDAP user \"%s\" does not exist", port->user_name),
+                        errdetail("LDAP search for filter \"%s\" on server \"%s\" returned no entries.",
+                                  filter, port->hba->ldapserver)));
            else
                ereport(LOG,
-                       (errmsg("LDAP search failed for filter \"%s\" on server \"%s\": user is not unique (%ld matches)",
-                               filter, port->hba->ldapserver,
-                         (long) ldap_count_entries(ldap, search_message))));
+                       (errmsg("LDAP user \"%s\" is not unique", port->user_name),
+                        errdetail_plural("LDAP search for filter \"%s\" on server \"%s\" returned %d entry.",
+                                         "LDAP search for filter \"%s\" on server \"%s\" returned %d entries.",
+                                         count,
+                                         filter, port->hba->ldapserver, count)));
 
            pfree(filter);
            ldap_msgfree(search_message);