]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict-client: Code cleanup - remember all iteration flags
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 10 Nov 2016 21:23:39 +0000 (23:23 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 11 Nov 2016 15:02:10 +0000 (17:02 +0200)
src/lib-dict/dict-client.c

index 7ac877226ae358beb897b7ca33adbf9218cf387a..6e28aa8f183da4feea8c7f3758b97e12830e6cdd 100644 (file)
@@ -89,12 +89,12 @@ struct client_dict_iter_result {
 struct client_dict_iterate_context {
        struct dict_iterate_context ctx;
        char *error;
+       enum dict_iterate_flags flags;
 
        pool_t results_pool;
        ARRAY(struct client_dict_iter_result) results;
        unsigned int result_idx;
 
-       bool async;
        bool seen_results;
        bool finished;
        bool deinit;
@@ -966,7 +966,7 @@ client_dict_iterate_init(struct dict *_dict, const char *const *paths,
        ctx = i_new(struct client_dict_iterate_context, 1);
        ctx->ctx.dict = _dict;
        ctx->results_pool = pool_alloconly_create("client dict iteration", 512);
-       ctx->async = (flags & DICT_ITERATE_FLAG_ASYNC) != 0;
+       ctx->flags = flags;
        i_array_init(&ctx->results, 64);
 
        str_printfa(query, "%c%d", DICT_PROTOCOL_CMD_ITERATE, flags);
@@ -1011,7 +1011,7 @@ static bool client_dict_iterate(struct dict_iterate_context *_ctx,
        array_clear(&ctx->results);
        p_clear(ctx->results_pool);
 
-       if (!ctx->async && ctx->ctx.has_more) {
+       if ((ctx->flags & DICT_ITERATE_FLAG_ASYNC) == 0 && ctx->ctx.has_more) {
                client_dict_wait(_ctx->dict);
                return client_dict_iterate(_ctx, key_r, value_r);
        }