- for ( rc = 0, count = 0; ncandidates > 0; ) {
-
- /*
- * FIXME: should we check for abandon?
- */
- for ( i = 0; i < mi->mi_ntargets; i++ ) {
- metasingleconn_t *msc = &mc->mc_conns[ i ];
- int lrc;
- LDAPMessage *res = NULL;
- struct timeval tv;
-
- LDAP_BACK_TV_SET( &tv );
-
- if ( msgid[ i ] == -1 ) {
- continue;
- }
-
- lrc = ldap_result( msc->msc_ld, msgid[ i ],
- LDAP_MSG_ALL, &tv, &res );
-
- if ( lrc == 0 ) {
- assert( res == NULL );
- continue;
-
- } else if ( lrc == -1 ) {
- /* we do not retry in this case;
- * only for unique operations... */
- ldap_get_option( msc->msc_ld,
- LDAP_OPT_ERROR_NUMBER, &rs->sr_err );
- rres = slap_map_api2result( rs );
- rres = rc;
- rc = -1;
- goto finish;
-
- } else if ( lrc == LDAP_RES_COMPARE ) {
- if ( count > 0 ) {
- rres = LDAP_OTHER;
- rc = -1;
- goto finish;
- }
-
- rc = ldap_parse_result( msc->msc_ld, res,
- &rs->sr_err,
- NULL, NULL, NULL, NULL, 1 );
- if ( rc != LDAP_SUCCESS ) {
- rres = rc;
- rc = -1;
- goto finish;
- }
-
- switch ( rs->sr_err ) {
- case LDAP_COMPARE_TRUE:
- case LDAP_COMPARE_FALSE:
-
- /*
- * true or false, got it;
- * sending to cache ...
- */
- if ( mi->mi_cache.ttl != META_DNCACHE_DISABLED ) {
- ( void )meta_dncache_update_entry( &mi->mi_cache, &op->o_req_ndn, i );
- }
-
- count++;
- rc = 0;
- break;
-
- default:
- rres = slap_map_api2result( rs );
+ if ( op->orc_ava->aa_desc == slap_schema.si_ad_objectClass ) {
+ ldap_back_map( &mt->mt_rwmap.rwm_oc,
+ &op->orc_ava->aa_value,
+ &mapped_value, BACKLDAP_MAP );