fix previous commit (ITS#3871)

This commit is contained in:
Pierangelo Masarati 2005-07-19 14:25:10 +00:00
parent 882f43bf01
commit c5c0c3e4f5
4 changed files with 51 additions and 13 deletions

View File

@ -175,6 +175,7 @@ retry:;
} else if ( rs->sr_err == LDAP_SUCCESS ) { } else if ( rs->sr_err == LDAP_SUCCESS ) {
struct timeval tv, *tvp = NULL; struct timeval tv, *tvp = NULL;
LDAPMessage *res = NULL; LDAPMessage *res = NULL;
int rc;
if ( mi->mi_targets[ candidate ].mt_timeout[ META_OP_ADD ] != 0 ) { if ( mi->mi_targets[ candidate ].mt_timeout[ META_OP_ADD ] != 0 ) {
tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_ADD ]; tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_ADD ];
@ -182,11 +183,11 @@ retry:;
tvp = &tv; tvp = &tv;
} }
rs->sr_err = ldap_result( mc->mc_conns[ candidate ].msc_ld, rs->sr_err = LDAP_OTHER;
rc = ldap_result( mc->mc_conns[ candidate ].msc_ld,
msgid, LDAP_MSG_ONE, tvp, &res ); msgid, LDAP_MSG_ONE, tvp, &res );
switch ( rs->sr_err ) { switch ( rc ) {
case -1: case -1:
rs->sr_err = LDAP_OTHER;
send_ldap_result( op, rs ); send_ldap_result( op, rs );
goto cleanup; goto cleanup;
@ -198,6 +199,14 @@ retry:;
send_ldap_result( op, rs ); send_ldap_result( op, rs );
goto cleanup; goto cleanup;
case LDAP_RES_ADD:
rc = ldap_parse_result( mc->mc_conns[ candidate ].msc_ld,
res, &rs->sr_err, NULL, NULL, NULL, NULL, 1 );
if ( rc != LDAP_SUCCESS ) {
rs->sr_err = rc;
}
break;
default: default:
ldap_msgfree( res ); ldap_msgfree( res );
break; break;

View File

@ -74,6 +74,7 @@ retry:;
} else if ( rs->sr_err == LDAP_SUCCESS ) { } else if ( rs->sr_err == LDAP_SUCCESS ) {
struct timeval tv, *tvp = NULL; struct timeval tv, *tvp = NULL;
LDAPMessage *res = NULL; LDAPMessage *res = NULL;
int rc;
if ( mi->mi_targets[ candidate ].mt_timeout[ META_OP_DELETE ] != 0 ) { if ( mi->mi_targets[ candidate ].mt_timeout[ META_OP_DELETE ] != 0 ) {
tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_DELETE ]; tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_DELETE ];
@ -81,9 +82,10 @@ retry:;
tvp = &tv; tvp = &tv;
} }
rs->sr_err = ldap_result( mc->mc_conns[ candidate ].msc_ld, rs->sr_err = LDAP_OTHER;
rc = ldap_result( mc->mc_conns[ candidate ].msc_ld,
msgid, LDAP_MSG_ONE, tvp, &res ); msgid, LDAP_MSG_ONE, tvp, &res );
switch ( rs->sr_err ) { switch ( rc ) {
case -1: case -1:
rs->sr_err = LDAP_OTHER; rs->sr_err = LDAP_OTHER;
send_ldap_result( op, rs ); send_ldap_result( op, rs );
@ -97,6 +99,14 @@ retry:;
send_ldap_result( op, rs ); send_ldap_result( op, rs );
goto cleanup; goto cleanup;
case LDAP_RES_DELETE:
rc = ldap_parse_result( mc->mc_conns[ candidate ].msc_ld,
res, &rs->sr_err, NULL, NULL, NULL, NULL, 1 );
if ( rc != LDAP_SUCCESS ) {
rs->sr_err = rc;
}
break;
default: default:
ldap_msgfree( res ); ldap_msgfree( res );
break; break;

View File

@ -191,11 +191,11 @@ retry:;
tvp = &tv; tvp = &tv;
} }
rs->sr_err = ldap_result( mc->mc_conns[ candidate ].msc_ld, rs->sr_err = LDAP_OTHER;
rc = ldap_result( mc->mc_conns[ candidate ].msc_ld,
msgid, LDAP_MSG_ONE, tvp, &res ); msgid, LDAP_MSG_ONE, tvp, &res );
switch ( rs->sr_err ) { switch ( rc ) {
case -1: case -1:
rs->sr_err = LDAP_OTHER;
rc = -1; rc = -1;
break; break;
@ -207,7 +207,17 @@ retry:;
rc = -1; rc = -1;
break; break;
case LDAP_RES_MODIFY:
rc = ldap_parse_result( mc->mc_conns[ candidate ].msc_ld,
res, &rs->sr_err, NULL, NULL, NULL, NULL, 1 );
if ( rc != LDAP_SUCCESS ) {
rs->sr_err = rc;
}
rc = 0;
break;
default: default:
rc = -1;
ldap_msgfree( res ); ldap_msgfree( res );
break; break;
} }

View File

@ -115,6 +115,7 @@ retry:;
} else if ( rs->sr_err == LDAP_SUCCESS ) { } else if ( rs->sr_err == LDAP_SUCCESS ) {
struct timeval tv, *tvp = NULL; struct timeval tv, *tvp = NULL;
LDAPMessage *res = NULL; LDAPMessage *res = NULL;
int rc;
if ( mi->mi_targets[ candidate ].mt_timeout[ META_OP_MODRDN ] != 0 ) { if ( mi->mi_targets[ candidate ].mt_timeout[ META_OP_MODRDN ] != 0 ) {
tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_MODRDN ]; tv.tv_sec = mi->mi_targets[ candidate ].mt_timeout[ META_OP_MODRDN ];
@ -122,11 +123,11 @@ retry:;
tvp = &tv; tvp = &tv;
} }
rs->sr_err = ldap_result( mc->mc_conns[ candidate ].msc_ld, rs->sr_err = LDAP_OTHER;
rc = ldap_result( mc->mc_conns[ candidate ].msc_ld,
msgid, LDAP_MSG_ONE, tvp, &res ); msgid, LDAP_MSG_ONE, tvp, &res );
switch ( rs->sr_err ) { switch ( rc ) {
case -1: case -1:
rs->sr_err = LDAP_OTHER;
break; break;
case 0: case 0:
@ -136,6 +137,14 @@ retry:;
LDAP_ADMINLIMIT_EXCEEDED : LDAP_OPERATIONS_ERROR; LDAP_ADMINLIMIT_EXCEEDED : LDAP_OPERATIONS_ERROR;
break; break;
case LDAP_RES_RENAME:
rc = ldap_parse_result( mc->mc_conns[ candidate ].msc_ld,
res, &rs->sr_err, NULL, NULL, NULL, NULL, 1 );
if ( rc != LDAP_SUCCESS ) {
rs->sr_err = rc;
}
break;
default: default:
ldap_msgfree( res ); ldap_msgfree( res );
break; break;
@ -157,10 +166,10 @@ cleanup:;
if ( rs->sr_err == LDAP_SUCCESS ) { if ( rs->sr_err == LDAP_SUCCESS ) {
meta_back_op_result( mc, op, rs, candidate ); meta_back_op_result( mc, op, rs, candidate );
} else {
send_ldap_result( op, rs );
} }
send_ldap_result( op, rs );
meta_back_release_conn( op, mc ); meta_back_release_conn( op, mc );
return rs->sr_err; return rs->sr_err;