X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foperation.c;h=3d38d0cef92893e1feecb394b2749845fb7ac28b;hb=01c38dd6ea7f02cfdc9f77f9299771a4ef6ce968;hp=13bb5cf590bbcc05e6f5adf1666035e004e2244a;hpb=5487575086d2060ab05a408543ff07be31b400a8;p=openldap diff --git a/servers/slapd/operation.c b/servers/slapd/operation.c index 13bb5cf590..3d38d0cef9 100644 --- a/servers/slapd/operation.c +++ b/servers/slapd/operation.c @@ -60,6 +60,17 @@ void slap_op_destroy(void) ldap_pvt_thread_mutex_destroy( &slap_op_mutex ); } +void +slap_op_groups_free( Operation *op ) +{ + GroupAssertion *g, *n; + for ( g = op->o_groups; g; g = n ) { + n = g->ga_next; + slap_sl_free( g, op->o_tmpmemctx ); + } + op->o_groups = NULL; +} + void slap_op_free( Operation *op ) { @@ -87,13 +98,8 @@ slap_op_free( Operation *op ) } #endif - { - GroupAssertion *g, *n; - for ( g = op->o_groups; g; g = n ) { - n = g->ga_next; - slap_sl_free( g, op->o_tmpmemctx ); - } - op->o_groups = NULL; + if ( op->o_groups ) { + slap_op_groups_free( op ); } #if defined( LDAP_SLAPI ) @@ -165,3 +171,32 @@ slap_op_alloc( return( op ); } + +slap_op_t +slap_req2op( ber_tag_t tag ) +{ + switch ( tag ) { + case LDAP_REQ_BIND: + return SLAP_OP_BIND; + case LDAP_REQ_UNBIND: + return SLAP_OP_UNBIND; + case LDAP_REQ_ADD: + return SLAP_OP_ADD; + case LDAP_REQ_DELETE: + return SLAP_OP_DELETE; + case LDAP_REQ_MODRDN: + return SLAP_OP_MODRDN; + case LDAP_REQ_MODIFY: + return SLAP_OP_MODIFY; + case LDAP_REQ_COMPARE: + return SLAP_OP_COMPARE; + case LDAP_REQ_SEARCH: + return SLAP_OP_SEARCH; + case LDAP_REQ_ABANDON: + return SLAP_OP_ABANDON; + case LDAP_REQ_EXTENDED: + return SLAP_OP_EXTENDED; + } + + return SLAP_OP_LAST; +}