[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Unwarranted referrals (Was: Bugs?)



I wrote:
> slapd returns "partial results and referral" even when no default
> referral has been configured in the server.
> 
>    $ ldapsearch -b c=ZZ         "objectclass=*"
>    ldap_bind: Partial results and referral received
> 
> So, a number of `LDAP_PARTIAL_RESULTS' in servers/slapd/ should be
> reduced to something like this:
> 
> 	((default_referral && *default_referral)
> 	 ? LDAP_PARTIAL_RESULTS
> 	 : LDAP_NO_SUCH_OBJECT)

Well, that was easy enough:

Index: ldap/servers/slapd/bind.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/bind.c,v
retrieving revision 1.1.3.1
diff -u -2 -r1.1.3.1 bind.c
--- bind.c	1998/08/08 22:43:13	1.1.3.1
+++ bind.c	1998/09/18 15:22:57
@@ -145,7 +145,10 @@
 		if ( cred.bv_len == 0 ) {
 			send_ldap_result( conn, op, LDAP_SUCCESS, NULL, NULL );
-		} else {
+		} else if ( default_referral && *default_referral ) {
 			send_ldap_result( conn, op, LDAP_PARTIAL_RESULTS, NULL,
 			    default_referral );
+		} else {
+			send_ldap_result( conn, op, LDAP_INVALID_CREDENTIALS,
+					  NULL, default_referral );
 		}
 		return;
Index: ldap/servers/slapd/result.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/servers/slapd/result.c,v
retrieving revision 1.4
diff -u -2 -r1.4 result.c
--- result.c	1998/08/21 04:33:42	1.4
+++ result.c	1998/09/18 15:22:57
@@ -41,4 +41,7 @@
 	unsigned long	tag, bytes;
 
+	if ( err == LDAP_PARTIAL_RESULTS && (text == NULL || *text == '\0') )
+		err = LDAP_NO_SUCH_OBJECT;
+
 	Debug( LDAP_DEBUG_TRACE, "send_ldap_result %d:%s:%s\n", err, matched ?
 	    matched : "", text ? text : "" );

-- 
Hallvard