From: Juan Gomez Date: Tue, 25 May 1999 23:07:05 +0000 (+0000) Subject: Add SOFTADD OP X-Git-Tag: OPENLDAP_REL_ENG_1_2_2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0914eeefe528e25e0bd79b155a2d6ed592edca77;p=thirdparty%2Fopenldap.git Add SOFTADD OP --- diff --git a/servers/slapd/back-ldbm/modify.c b/servers/slapd/back-ldbm/modify.c index 3772d42384..8dc96fcafa 100644 --- a/servers/slapd/back-ldbm/modify.c +++ b/servers/slapd/back-ldbm/modify.c @@ -113,7 +113,7 @@ int ldbm_internal_modify( && (be->be_update_ndn == NULL)) { /* XXX: It may be wrong, it changes mod time even if - * mod fails! + * mod fails! I also Think this is leaking memory... */ add_lastmods( op, &mods ); @@ -137,6 +137,19 @@ int ldbm_internal_modify( case LDAP_MOD_REPLACE: err = replace_values( e, mod, op->o_ndn ); break; + case LDAP_MOD_SOFTADD: + /* Avoid problems in index_add_mods() + * We need to add index if necessary. + */ + mod->mod_op = LDAP_MOD_ADD; + if ( (err = add_values( e, mod, op->o_ndn )) + == LDAP_TYPE_OR_VALUE_EXISTS ) { + + err = LDAP_SUCCESS; + mod->mod_op = LDAP_MOD_SOFTADD; + + } + break; } if ( err != LDAP_SUCCESS ) {