]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/operation.c
SLAPI - Netscape plugin API for slapd - based on patch contributed by Steve Omrani...
[openldap] / servers / slapd / operation.c
index 70343c6f40cf4a200a44e2020028acf79e67c3d0..4745076706df80f14c9b254fda7f9097a6cf0ace 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "portable.h"
+#include "slapi_common.h"
 
 #include <stdio.h>
 
@@ -13,6 +14,7 @@
 #include <ac/socket.h>
 
 #include "slap.h"
+#include "slapi.h"
 
 
 void
@@ -23,10 +25,31 @@ 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_CLIENT_UPDATE
+       if ( op->o_clientupdate_state.bv_val != NULL ) {
+               free( op->o_clientupdate_state.bv_val );
+       }
+#endif /* LDAP_CLIENT_UPDATE */
+
+#if defined( LDAP_SLAPI )
+       if ( op->o_pb != NULL ) {
+               slapi_pblock_destroy( (Slapi_PBlock *)op->o_pb );
+       }
+#endif /* defined( LDAP_SLAPI ) */
+
        free( (char *) op );
 }
 
@@ -49,5 +72,9 @@ slap_op_alloc(
        op->o_time = slap_get_time();
        op->o_opid = id;
 
+#if defined( LDAP_SLAPI )
+       op->o_pb = slapi_pblock_new();
+#endif /* defined( LDAP_SLAPI ) */
+
        return( op );
 }