From 379a62021752583165b55816f946657faf0a3c6d Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Fri, 4 Mar 2005 06:20:37 +0000 Subject: [PATCH] Fix ITS#3537 (need to repeat this fix for the other operations too.) --- servers/slapd/back-ldap/search.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c index a9fc57fb75..9afcbafef4 100644 --- a/servers/slapd/back-ldap/search.c +++ b/servers/slapd/back-ldap/search.c @@ -56,7 +56,6 @@ ldap_back_search( int i; char **attrs = NULL; int dontfreetext = 0; - int freeconn = 0; int do_retry = 1; LDAPControl **ctrls = NULL; @@ -120,12 +119,18 @@ retry: if ( rs->sr_err != LDAP_SUCCESS ) { fail:; - rc = ldap_back_op_result( lc, op, rs, msgid, LDAP_BACK_SENDERR ); - if ( freeconn ) { + if ( rs->sr_err == LDAP_SERVER_DOWN ) { + 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 ); lc = NULL; + goto finish; } - goto finish; } /* We pull apart the ber result, stuff it into a slapd entry, and @@ -274,9 +279,7 @@ fail:; goto retry; } } - /* FIXME: invalidate the connection? */ rs->sr_err = LDAP_SERVER_DOWN; - freeconn = 1; goto fail; } -- 2.39.5