mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
Fix ITS#3537 (need to repeat this fix for the other operations too.)
This commit is contained in:
parent
c160e0d349
commit
379a620217
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user