svn commit: samba r13986 - in branches/SAMBA_4_0/source/lib/ldb/ldb_ldap: .

idra at samba.org idra at samba.org
Tue Mar 7 20:43:41 GMT 2006


Author: idra
Date: 2006-03-07 20:43:40 +0000 (Tue, 07 Mar 2006)
New Revision: 13986

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13986

Log:

minor fixes


Modified:
   branches/SAMBA_4_0/source/lib/ldb/ldb_ldap/ldb_ldap.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/ldb/ldb_ldap/ldb_ldap.c
===================================================================
--- branches/SAMBA_4_0/source/lib/ldb/ldb_ldap/ldb_ldap.c	2006-03-07 20:42:47 UTC (rev 13985)
+++ branches/SAMBA_4_0/source/lib/ldb/ldb_ldap/ldb_ldap.c	2006-03-07 20:43:40 UTC (rev 13986)
@@ -713,6 +713,7 @@
 	char *errmsgp = NULL;
 	char **referralsp = NULL;
 	LDAPControl **serverctrlsp = NULL;
+	int ret;
 
 	type = ldap_msgtype(result);
 
@@ -763,17 +764,19 @@
 					lldb_add_msg_attr(ac->module->ldb, ares->message, attr, bval);
 					ldap_value_free_len(bval);
 				}					  
-				
-				ldap_memfree(attr);
 			}
 			if (berptr) ber_free(berptr, 0);
 
 
 			ares->type = LDB_REPLY_ENTRY;
 			handle->state = LDB_ASYNC_PENDING;
-			handle->status = ac->callback(ac->module->ldb, ac->context, ares);
-
-			ldap_msgfree(result);
+			ret = ac->callback(ac->module->ldb, ac->context, ares);
+			if (ret != LDB_SUCCESS) {
+				handle->status = ret;
+			}
+		} else {
+			handle->status = LDB_ERR_PROTOCOL_ERROR;
+			handle->state = LDB_ASYNC_DONE;
 		}
 		break;
 
@@ -798,7 +801,10 @@
 		ares->referral = talloc_strdup(ares, *referralsp);
 		ares->type = LDB_REPLY_REFERRAL;
 		handle->state = LDB_ASYNC_PENDING;
-		handle->status = ac->callback(ac->module->ldb, ac->context, ares);
+		ret = ac->callback(ac->module->ldb, ac->context, ares);
+		if (ret != LDB_SUCCESS) {
+			handle->status = ret;
+		}
 
 		break;
 
@@ -823,7 +829,10 @@
 		
 		ares->type = LDB_REPLY_DONE;
 		handle->state = LDB_ASYNC_DONE;
-		handle->status = ac->callback(ac->module->ldb, ac->context, ares);
+		ret = ac->callback(ac->module->ldb, ac->context, ares);
+		if (ret != LDB_SUCCESS) {
+			handle->status = ret;
+		}
 
 		break;
 
@@ -845,7 +854,8 @@
 		break;
 
 	default:
-		handle->state = LDB_ERR_PROTOCOL_ERROR;
+		handle->status = LDB_ERR_PROTOCOL_ERROR;
+		goto error;
 	}
 
 	if (matcheddnp) ldap_memfree(matcheddnp);
@@ -856,10 +866,12 @@
 	if (referralsp) ldap_value_free(referralsp);
 	if (serverctrlsp) ldap_controls_free(serverctrlsp);
 
+	ldap_msgfree(result);
 	return handle->status;
 
 error:
 	handle->state = LDB_ASYNC_DONE;
+	ldap_msgfree(result);
 	return handle->status;
 }
 



More information about the samba-cvs mailing list