mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-20 22:59:34 -05:00
gently handle LDAP_UNAVAILABLE for a few times
This commit is contained in:
parent
acb17be789
commit
d08257407d
3 changed files with 70 additions and 24 deletions
|
|
@ -328,12 +328,18 @@ retry:;
|
||||||
rc = ldap_add_s( ld, entry, attrs );
|
rc = ldap_add_s( ld, entry, attrs );
|
||||||
if ( rc != LDAP_SUCCESS ) {
|
if ( rc != LDAP_SUCCESS ) {
|
||||||
ldap_perror( ld, "ldap_add" );
|
ldap_perror( ld, "ldap_add" );
|
||||||
if ( rc == LDAP_BUSY && do_retry > 0 ) {
|
switch ( rc ) {
|
||||||
|
case LDAP_BUSY:
|
||||||
|
case LDAP_UNAVAILABLE:
|
||||||
|
if ( do_retry > 0 ) {
|
||||||
do_retry--;
|
do_retry--;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
break;
|
/* fall thru */
|
||||||
|
|
||||||
|
default:
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
@ -346,14 +352,22 @@ retry:;
|
||||||
rc = ldap_delete_s( ld, entry );
|
rc = ldap_delete_s( ld, entry );
|
||||||
if ( rc != LDAP_SUCCESS ) {
|
if ( rc != LDAP_SUCCESS ) {
|
||||||
ldap_perror( ld, "ldap_delete" );
|
ldap_perror( ld, "ldap_delete" );
|
||||||
if ( rc == LDAP_BUSY && do_retry > 0 ) {
|
switch ( rc ) {
|
||||||
|
case LDAP_BUSY:
|
||||||
|
case LDAP_UNAVAILABLE:
|
||||||
|
if ( do_retry > 0 ) {
|
||||||
do_retry--;
|
do_retry--;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
break;
|
/* fall thru */
|
||||||
|
|
||||||
|
default:
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:;
|
||||||
fprintf( stderr, " PID=%ld - Add/Delete done (%d).\n", (long) pid, rc );
|
fprintf( stderr, " PID=%ld - Add/Delete done (%d).\n", (long) pid, rc );
|
||||||
|
|
||||||
ldap_unbind( ld );
|
ldap_unbind( ld );
|
||||||
|
|
|
||||||
|
|
@ -232,16 +232,26 @@ retry:;
|
||||||
rc = ldap_modify_s( ld, entry, mods );
|
rc = ldap_modify_s( ld, entry, mods );
|
||||||
if ( rc != LDAP_SUCCESS ) {
|
if ( rc != LDAP_SUCCESS ) {
|
||||||
ldap_perror( ld, "ldap_modify" );
|
ldap_perror( ld, "ldap_modify" );
|
||||||
if ( rc == LDAP_BUSY && do_retry > 0 ) {
|
switch ( rc ) {
|
||||||
|
case LDAP_NO_SUCH_OBJECT:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LDAP_BUSY:
|
||||||
|
case LDAP_UNAVAILABLE:
|
||||||
|
if ( do_retry > 0 ) {
|
||||||
do_retry--;
|
do_retry--;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
if ( rc != LDAP_NO_SUCH_OBJECT ) break;
|
/* fall thru */
|
||||||
continue;
|
|
||||||
|
default:
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:;
|
||||||
fprintf( stderr, " PID=%ld - Modify done (%d).\n", (long) pid, rc );
|
fprintf( stderr, " PID=%ld - Modify done (%d).\n", (long) pid, rc );
|
||||||
|
|
||||||
ldap_unbind( ld );
|
ldap_unbind( ld );
|
||||||
|
|
|
||||||
|
|
@ -211,25 +211,47 @@ retry:;
|
||||||
rc = ldap_modrdn2_s( ld, DNs[0], rdns[0], 0 );
|
rc = ldap_modrdn2_s( ld, DNs[0], rdns[0], 0 );
|
||||||
if ( rc != LDAP_SUCCESS ) {
|
if ( rc != LDAP_SUCCESS ) {
|
||||||
ldap_perror( ld, "ldap_modrdn" );
|
ldap_perror( ld, "ldap_modrdn" );
|
||||||
if ( rc == LDAP_BUSY && do_retry > 0 ) {
|
switch ( rc ) {
|
||||||
|
case LDAP_NO_SUCH_OBJECT:
|
||||||
|
/* NOTE: this likely means
|
||||||
|
* the second modrdn failed
|
||||||
|
* during the previous round... */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LDAP_BUSY:
|
||||||
|
case LDAP_UNAVAILABLE:
|
||||||
|
if ( do_retry > 0 ) {
|
||||||
do_retry--;
|
do_retry--;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
if ( rc != LDAP_NO_SUCH_OBJECT ) break;
|
/* fall thru */
|
||||||
continue;
|
|
||||||
|
default:
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rc = ldap_modrdn2_s( ld, DNs[1], rdns[1], 1 );
|
rc = ldap_modrdn2_s( ld, DNs[1], rdns[1], 1 );
|
||||||
if ( rc != LDAP_SUCCESS ) {
|
if ( rc != LDAP_SUCCESS ) {
|
||||||
ldap_perror( ld, "ldap_modrdn" );
|
ldap_perror( ld, "ldap_modrdn" );
|
||||||
if ( rc == LDAP_BUSY && do_retry > 0 ) {
|
switch ( rc ) {
|
||||||
|
case LDAP_NO_SUCH_OBJECT:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LDAP_BUSY:
|
||||||
|
case LDAP_UNAVAILABLE:
|
||||||
|
if ( do_retry > 0 ) {
|
||||||
do_retry--;
|
do_retry--;
|
||||||
goto retry;
|
goto retry;
|
||||||
}
|
}
|
||||||
if ( rc != LDAP_NO_SUCH_OBJECT ) break;
|
/* fall thru */
|
||||||
continue;
|
|
||||||
|
default:
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
done:;
|
||||||
fprintf( stderr, " PID=%ld - Modrdn done (%d).\n", (long) pid, rc );
|
fprintf( stderr, " PID=%ld - Modrdn done (%d).\n", (long) pid, rc );
|
||||||
|
|
||||||
ldap_unbind( ld );
|
ldap_unbind( ld );
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue