]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/operation.c
Commit of the Proxy Cache contribution (ITS#2062)
[openldap] / servers / slapd / operation.c
index 70343c6f40cf4a200a44e2020028acf79e67c3d0..2a8da886da336e1b588d7941c8da1bfba0274b6d 100644 (file)
@@ -1,7 +1,7 @@
 /* operation.c - routines to deal with pending ldap operations */
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 
 
 #include "slap.h"
 
+#ifdef LDAP_SLAPI
+#include "slapi.h"
+#endif
+
 
 void
 slap_op_free( Operation *op )
@@ -23,10 +27,41 @@ slap_op_free( Operation *op )
        if ( op->o_ber != NULL ) {
                ber_free( op->o_ber, 1 );
        }
+       if ( op->o_dn.bv_val != NULL ) {
+               free( op->o_dn.bv_val );
+       }
+       if ( op->o_ndn.bv_val != NULL ) {
+               free( op->o_ndn.bv_val );
+       }
+       if ( op->o_authmech.bv_val != NULL ) {
+               free( op->o_authmech.bv_val );
+       }
        if ( op->o_ctrls != NULL ) {
                ldap_controls_free( op->o_ctrls );
        }
 
+#ifdef LDAP_CONNECTIONLESS
+       if ( op->o_res_ber != NULL ) {
+               ber_free( op->o_res_ber, 1 );
+       }
+#endif
+#ifdef LDAP_CLIENT_UPDATE
+       if ( op->o_clientupdate_state.bv_val != NULL ) {
+               free( op->o_clientupdate_state.bv_val );
+       }
+#endif
+#ifdef LDAP_SYNC
+       if ( op->o_sync_state.bv_val != NULL ) {
+               free( op->o_sync_state.bv_val );
+       }
+#endif
+
+#if defined( LDAP_SLAPI )
+       if ( op->o_pb != NULL ) {
+               slapi_pblock_destroy( (Slapi_PBlock *)op->o_pb );
+       }
+#endif /* defined( LDAP_SLAPI ) */
+
        free( (char *) op );
 }
 
@@ -48,6 +83,13 @@ slap_op_alloc(
 
        op->o_time = slap_get_time();
        op->o_opid = id;
+#ifdef LDAP_CONNECTIONLESS
+       op->o_res_ber = NULL;
+#endif
+
+#if defined( LDAP_SLAPI )
+       op->o_pb = slapi_pblock_new();
+#endif /* defined( LDAP_SLAPI ) */
 
        return( op );
 }