X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foperation.c;h=3d38d0cef92893e1feecb394b2749845fb7ac28b;hb=01c38dd6ea7f02cfdc9f77f9299771a4ef6ce968;hp=68ee4d198a371cab500ca6b37082ab9c6bf0831c;hpb=7dcb68f6fa4bcdb3fbd883d9149ec4c23713d1c9;p=openldap diff --git a/servers/slapd/operation.c b/servers/slapd/operation.c index 68ee4d198a..3d38d0cef9 100644 --- a/servers/slapd/operation.c +++ b/servers/slapd/operation.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 1998-2005 The OpenLDAP Foundation. + * Copyright 1998-2006 The OpenLDAP Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -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 ) @@ -132,8 +138,7 @@ slap_op_alloc( BerElement *ber, ber_int_t msgid, ber_tag_t tag, - ber_int_t id -) + ber_int_t id ) { Operation *op; @@ -166,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; +}