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

Re: backglue.c sometimes falsely returns LDAP_SIZELIMIT_EXCEEDED (ITS#2888)



I just tried to test the fix. Now, in some cases, it didn't return
LDAP_SIZELIMIT_EXCEEDED even if the limit was hit. With the following small
patch it seems to work correctly ( at least during my tests), though I am
not sure if it is correct in all corner-cases.


--- servers/slapd/backglue.c	20 Dec 2003 16:41:08 -0000	1.67
+++ servers/slapd/backglue.c	23 Dec 2003 18:41:06 -0000
@@ -201,8 +201,12 @@
 		return SLAP_CB_CONTINUE;
 
 	default:
-		if ( gs->is_slimit && rs->sr_err == LDAP_SIZELIMIT_EXCEEDED
-				&& rs->sr_nentries >= gs->slimit ) {
+		if ( gs->is_slimit && 
+			( gs->err == LDAP_SIZELIMIT_EXCEEDED || 
+			  ( rs->sr_err == LDAP_SIZELIMIT_EXCEEDED && 
+                            rs->sr_nentries >= gs->slimit ) 
+			) 
+		   ) {
 			gs->err = LDAP_SIZELIMIT_EXCEEDED;
 			return -1;
 		}


-- 
regards,
    Ralf Haferkamp
SUSE LINUX AG, Deutschherrnstrasse 15-19, D-90429 Nuernberg
T: +49-911-74053-0
F: +49-911-74053575 - Ralf.Haferkamp@suse.com