]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/operation.c
Commit of the Proxy Cache contribution (ITS#2062)
[openldap] / servers / slapd / operation.c
index 59fc1b9cd7e7c494388081a8406c3fc05fc79b9c..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 )
@@ -36,11 +40,27 @@ slap_op_free( Operation *op )
                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 /* LDAP_CLIENT_UPDATE */
+#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 );
 }
@@ -63,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 );
 }