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,
+ unsigned int max_count,
+ unsigned int timeout_secs,
+ bool error, const char *reason);
static int deref2str(const char *str, int *ref_r)
{
}
static void
-db_ldap_check_hanging(struct ldap_connection *conn, struct ldap_request *request)
+db_ldap_check_hanging(struct ldap_connection *conn)
{
struct ldap_request *first_request;
unsigned int count;
aqueue_idx(conn->request_queue, 0));
secs_diff = ioloop_time - first_request->create_time;
if (secs_diff > DB_LDAP_REQUEST_LOST_TIMEOUT_SECS) {
- e_error(authdb_event(request->auth_request),
- "Connection appears to be hanging, reconnecting");
+ db_ldap_abort_requests(conn, UINT_MAX, 0, TRUE,
+ "LDAP connection appears to be hanging");
ldap_conn_reconnect(conn);
}
}
request->msgid = -1;
request->create_time = ioloop_time;
- db_ldap_check_hanging(conn, request);
+ db_ldap_check_hanging(conn);
aqueue_append(conn->request_queue, &request);
(void)db_ldap_request_queue_next(conn);