From e6d485bb80368a8cb6f7a612bc672979cdf0592d Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Wed, 5 Apr 2006 23:27:52 +0000 Subject: [PATCH] import remaining part of error mapping (ITS#4419) --- servers/slapd/back-meta/add.c | 16 +++++++++++----- servers/slapd/back-meta/delete.c | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/servers/slapd/back-meta/add.c b/servers/slapd/back-meta/add.c index 03187a90e6..2b08958374 100644 --- a/servers/slapd/back-meta/add.c +++ b/servers/slapd/back-meta/add.c @@ -45,6 +45,7 @@ meta_back_add( Operation *op, SlapReply *rs ) dncookie dc; int msgid; int do_retry = 1; + int maperr = 1; Debug(LDAP_DEBUG_ARGS, "==> meta_back_add: %s\n", op->o_req_dn.bv_val, 0, 0 ); @@ -186,20 +187,19 @@ retry:; } rs->sr_err = LDAP_OTHER; + maperr = 0; rc = ldap_result( mc->mc_conns[ candidate ].msc_ld, msgid, LDAP_MSG_ALL, tvp, &res ); switch ( rc ) { case -1: - send_ldap_result( op, rs ); - goto cleanup; + break; case 0: ldap_abandon_ext( mc->mc_conns[ candidate ].msc_ld, msgid, NULL, NULL ); rs->sr_err = op->o_protocol >= LDAP_VERSION3 ? LDAP_ADMINLIMIT_EXCEEDED : LDAP_OPERATIONS_ERROR; - send_ldap_result( op, rs ); - goto cleanup; + break; case LDAP_RES_ADD: rc = ldap_parse_result( mc->mc_conns[ candidate ].msc_ld, @@ -207,6 +207,7 @@ retry:; if ( rc != LDAP_SUCCESS ) { rs->sr_err = rc; } + maperr = 1; break; default: @@ -215,7 +216,12 @@ retry:; } } - (void)meta_back_op_result( mc, op, rs, candidate ); + if ( maperr ) { + rs->sr_err = meta_back_op_result( mc, op, rs, candidate ); + + } else { + send_ldap_result( op, rs ); + } cleanup:; for ( --i; i >= 0; --i ) { diff --git a/servers/slapd/back-meta/delete.c b/servers/slapd/back-meta/delete.c index d904efb903..d9461ac4e4 100644 --- a/servers/slapd/back-meta/delete.c +++ b/servers/slapd/back-meta/delete.c @@ -41,6 +41,7 @@ meta_back_delete( Operation *op, SlapReply *rs ) dncookie dc; int msgid; int do_retry = 1; + int maperr = 1; mc = meta_back_getconn( op, rs, &candidate, LDAP_BACK_SENDERR ); if ( !mc || !meta_back_dobind( op, rs, mc, LDAP_BACK_SENDERR ) ) { @@ -84,21 +85,20 @@ retry:; } rs->sr_err = LDAP_OTHER; + maperr = 0; rc = ldap_result( mc->mc_conns[ candidate ].msc_ld, msgid, LDAP_MSG_ALL, tvp, &res ); switch ( rc ) { case -1: rs->sr_err = LDAP_OTHER; - send_ldap_result( op, rs ); - goto cleanup; + break; case 0: ldap_abandon_ext( mc->mc_conns[ candidate ].msc_ld, msgid, NULL, NULL ); rs->sr_err = op->o_protocol >= LDAP_VERSION3 ? LDAP_ADMINLIMIT_EXCEEDED : LDAP_OPERATIONS_ERROR; - send_ldap_result( op, rs ); - goto cleanup; + break; case LDAP_RES_DELETE: rc = ldap_parse_result( mc->mc_conns[ candidate ].msc_ld, @@ -106,6 +106,7 @@ retry:; if ( rc != LDAP_SUCCESS ) { rs->sr_err = rc; } + maperr = 1; break; default: @@ -114,7 +115,12 @@ retry:; } } - rs->sr_err = meta_back_op_result( mc, op, rs, candidate ); + if ( maperr ) { + rs->sr_err = meta_back_op_result( mc, op, rs, candidate ); + + } else { + send_ldap_result( op, rs ); + } cleanup:; if ( mdn.bv_val != op->o_req_dn.bv_val ) { -- 2.39.5