str_c(str), user_callback, request);
}
-static bool iter_callback(struct auth_worker_connection *conn ATTR_UNUSED,
+static bool iter_callback(struct auth_worker_connection *conn,
const char *reply, void *context)
{
struct blocking_userdb_iterate_context *ctx = context;
+ ctx->conn = conn;
+
if (str_begins(reply, "*\t")) {
if (ctx->destroyed)
return TRUE;
ctx->ctx.context = context;
auth_request_ref(request);
- ctx->conn = auth_worker_call(request->pool, "*",
- str_c(str), iter_callback, ctx);
+ auth_worker_call(request->pool, "*",
+ str_c(str), iter_callback, ctx);
return &ctx->ctx;
}
struct blocking_userdb_iterate_context *ctx =
(struct blocking_userdb_iterate_context *)_ctx;
+ i_assert(ctx->conn != NULL);
+
ctx->next = TRUE;
auth_worker_server_resume_input(ctx->conn);
}
/* iter_callback() may still be called */
ctx->destroyed = TRUE;
- auth_worker_server_resume_input(ctx->conn);
+ if (ctx->conn != NULL)
+ auth_worker_server_resume_input(ctx->conn);
return ret;
}