struct ldap_request_search *ldap_request,
LDAPMessage *res, bool skip_null_values,
bool iter_dn_values);
-static void db_ldap_abort_requests(struct ldap_connection *conn,
+static bool db_ldap_abort_requests(struct ldap_connection *conn,
unsigned int max_count,
unsigned int timeout_secs,
bool error, const char *reason);
}
}
-static void db_ldap_abort_requests(struct ldap_connection *conn,
+static bool db_ldap_abort_requests(struct ldap_connection *conn,
unsigned int max_count,
unsigned int timeout_secs,
bool error, const char *reason)
{
struct ldap_request *request;
time_t diff;
+ bool aborts = FALSE;
while (aqueue_count(conn->request_queue) > 0 && max_count > 0) {
request = array_idx_elem(&conn->request_array,
}
request->callback(conn, request, NULL);
max_count--;
+ aborts = TRUE;
}
+ return aborts;
}
static struct ldap_request *
if (idx > 0) {
/* see if there are timed out requests */
- db_ldap_abort_requests(conn, idx,
- DB_LDAP_REQUEST_LOST_TIMEOUT_SECS,
- TRUE, "Request lost");
+ if (db_ldap_abort_requests(conn, idx,
+ DB_LDAP_REQUEST_LOST_TIMEOUT_SECS,
+ TRUE, "Request lost"))
+ ldap_conn_reconnect(conn);
}
return TRUE;
}