Fix ITS#3537 (need to repeat this fix for the other operations too.)

This commit is contained in:
Howard Chu 2005-03-04 06:20:37 +00:00
parent c160e0d349
commit 379a620217

View File

@ -56,7 +56,6 @@ ldap_back_search(
int i; int i;
char **attrs = NULL; char **attrs = NULL;
int dontfreetext = 0; int dontfreetext = 0;
int freeconn = 0;
int do_retry = 1; int do_retry = 1;
LDAPControl **ctrls = NULL; LDAPControl **ctrls = NULL;
@ -120,12 +119,18 @@ retry:
if ( rs->sr_err != LDAP_SUCCESS ) { if ( rs->sr_err != LDAP_SUCCESS ) {
fail:; fail:;
rc = ldap_back_op_result( lc, op, rs, msgid, LDAP_BACK_SENDERR ); if ( rs->sr_err == LDAP_SERVER_DOWN ) {
if ( freeconn ) { if ( do_retry ) {
do_retry = 0;
if ( ldap_back_retry( lc, op, &rs, LDAP_BACK_DONTSEND ) ) {
goto retry;
}
}
rc = ldap_back_op_result( lc, op, rs, msgid, LDAP_BACK_SENDERR );
ldap_back_freeconn( op, lc ); ldap_back_freeconn( op, lc );
lc = NULL; lc = NULL;
goto finish;
} }
goto finish;
} }
/* We pull apart the ber result, stuff it into a slapd entry, and /* We pull apart the ber result, stuff it into a slapd entry, and
@ -274,9 +279,7 @@ fail:;
goto retry; goto retry;
} }
} }
/* FIXME: invalidate the connection? */
rs->sr_err = LDAP_SERVER_DOWN; rs->sr_err = LDAP_SERVER_DOWN;
freeconn = 1;
goto fail; goto fail;
} }