From: Timo Sirainen Date: Sat, 16 Jul 2016 16:23:52 +0000 (-0500) Subject: lib-dict: Added enum dict_commit_ret. X-Git-Tag: 2.3.0.rc1~3298 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9a382894724292e2af60ef94fc471d761f45e5d5;p=thirdparty%2Fdovecot%2Fcore.git lib-dict: Added enum dict_commit_ret. --- diff --git a/src/dict/dict-commands.c b/src/dict/dict-commands.c index d769507a54..38cae994e6 100644 --- a/src/dict/dict-commands.c +++ b/src/dict/dict-commands.c @@ -299,12 +299,13 @@ cmd_commit_finish(struct dict_connection_cmd *cmd, cmd_stats_update(cmd, cmd_stats.commits); switch (result->ret) { - case 1: + case DICT_COMMIT_RET_OK: chr = DICT_PROTOCOL_REPLY_OK; break; - case 0: + case DICT_COMMIT_RET_NOTFOUND: chr = DICT_PROTOCOL_REPLY_NOTFOUND; break; + case DICT_COMMIT_RET_FAILED: default: i_assert(result->error != NULL); chr = DICT_PROTOCOL_REPLY_FAIL; diff --git a/src/lib-dict/dict-client.c b/src/lib-dict/dict-client.c index 51f1c107cf..5b77f1351a 100644 --- a/src/lib-dict/dict-client.c +++ b/src/lib-dict/dict-client.c @@ -891,7 +891,7 @@ client_dict_transaction_commit_callback(struct client_dict_cmd *cmd, { struct client_dict *dict = cmd->dict; struct dict_commit_result result = { - .ret = -1, .error = NULL + .ret = DICT_COMMIT_RET_FAILED, .error = NULL }; if (error != NULL) { @@ -899,10 +899,10 @@ client_dict_transaction_commit_callback(struct client_dict_cmd *cmd, result.error = error; } else switch (*line) { case DICT_PROTOCOL_REPLY_OK: - result.ret = 1; + result.ret = DICT_COMMIT_RET_OK; break; case DICT_PROTOCOL_REPLY_NOTFOUND: - result.ret = 0; + result.ret = DICT_COMMIT_RET_NOTFOUND; break; case DICT_PROTOCOL_REPLY_FAIL: { const char *error = strchr(line+1, '\t'); @@ -912,7 +912,7 @@ client_dict_transaction_commit_callback(struct client_dict_cmd *cmd, break; } default: - result.ret = -1; + result.ret = DICT_COMMIT_RET_FAILED; result.error = t_strdup_printf( "dict-client: Invalid commit reply: %s", line); client_dict_disconnect(dict, result.error); @@ -965,13 +965,13 @@ client_dict_transaction_commit(struct dict_transaction_context *_ctx, } else if (ctx->error != NULL) { /* already failed */ struct dict_commit_result result = { - .ret = -1, .error = ctx->error + .ret = DICT_COMMIT_RET_FAILED, .error = ctx->error }; callback(&result, context); } else { /* nothing changed */ struct dict_commit_result result = { - .ret = 1, .error = NULL + .ret = DICT_COMMIT_RET_OK, .error = NULL }; callback(&result, context); } diff --git a/src/lib-dict/dict-file.c b/src/lib-dict/dict-file.c index cd62e5f6e6..d99cca2300 100644 --- a/src/lib-dict/dict-file.c +++ b/src/lib-dict/dict-file.c @@ -634,11 +634,11 @@ file_dict_transaction_commit(struct dict_transaction_context *_ctx, memset(&result, 0, sizeof(result)); if (file_dict_write_changes(ctx, &atomic_inc_not_found, &result.error) < 0) - result.ret = -1; + result.ret = DICT_COMMIT_RET_FAILED; else if (atomic_inc_not_found) - result.ret = 0; + result.ret = DICT_COMMIT_RET_NOTFOUND; else - result.ret = 1; + result.ret = DICT_COMMIT_RET_OK; pool_unref(&ctx->pool); callback(&result, context); diff --git a/src/lib-dict/dict-memcached-ascii.c b/src/lib-dict/dict-memcached-ascii.c index 310bee67bd..6efa15dc0f 100644 --- a/src/lib-dict/dict-memcached-ascii.c +++ b/src/lib-dict/dict-memcached-ascii.c @@ -88,7 +88,9 @@ static void memcached_ascii_disconnected(struct memcached_ascii_connection *conn, const char *reason) { - const struct dict_commit_result result = { -1, reason }; + const struct dict_commit_result result = { + DICT_COMMIT_RET_FAILED, reason + }; const struct memcached_ascii_dict_reply *reply; connection_disconnect(&conn->conn); @@ -201,7 +203,9 @@ static int memcached_ascii_input_reply_read(struct memcached_ascii_dict *dict, static int memcached_ascii_input_reply(struct memcached_ascii_dict *dict, const char **error_r) { - const struct dict_commit_result result = { 1, NULL }; + const struct dict_commit_result result = { + DICT_COMMIT_RET_OK, NULL + }; struct memcached_ascii_dict_reply *replies; unsigned int count; int ret; @@ -630,7 +634,7 @@ memcached_ascii_transaction_commit(struct dict_transaction_context *_ctx, struct memcached_ascii_dict *dict = (struct memcached_ascii_dict *)_ctx->dict; struct dict_memcached_ascii_commit_ctx commit_ctx; - struct dict_commit_result result = { 1, NULL }; + struct dict_commit_result result = { DICT_COMMIT_RET_OK, NULL }; if (_ctx->changed) { memset(&commit_ctx, 0, sizeof(commit_ctx)); diff --git a/src/lib-dict/dict-redis.c b/src/lib-dict/dict-redis.c index 30329ae385..6b173019ec 100644 --- a/src/lib-dict/dict-redis.c +++ b/src/lib-dict/dict-redis.c @@ -98,7 +98,9 @@ static void redis_callback(struct redis_dict *dict, static void redis_disconnected(struct redis_connection *conn, const char *reason) { - const struct dict_commit_result result = { -1, reason }; + const struct dict_commit_result result = { + DICT_COMMIT_RET_FAILED, reason + }; const struct redis_dict_reply *reply; conn->dict->db_id_set = FALSE; @@ -257,7 +259,9 @@ redis_conn_input_more(struct redis_connection *conn, const char **error_r) reply = array_idx_modifiable(&dict->replies, 0); i_assert(reply->reply_count > 0); if (--reply->reply_count == 0) { - const struct dict_commit_result result = { 1, NULL }; + const struct dict_commit_result result = { + DICT_COMMIT_RET_OK, NULL + }; redis_callback(dict, reply, &result); array_delete(&dict->replies, 0, 1); /* if we're running in a dict-ioloop, we're handling a @@ -603,7 +607,7 @@ redis_transaction_commit(struct dict_transaction_context *_ctx, bool async, struct redis_dict *dict = (struct redis_dict *)_ctx->dict; struct redis_dict_reply *reply; unsigned int i; - struct dict_commit_result result = { .ret = 1 }; + struct dict_commit_result result = { .ret = DICT_COMMIT_RET_OK }; i_assert(dict->transaction_open); dict->transaction_open = FALSE; diff --git a/src/lib-dict/dict-sql.c b/src/lib-dict/dict-sql.c index 35e804a450..a1d1235bbe 100644 --- a/src/lib-dict/dict-sql.c +++ b/src/lib-dict/dict-sql.c @@ -797,11 +797,12 @@ sql_dict_transaction_commit_callback(const struct sql_commit_result *sql_result, memset(&result, 0, sizeof(result)); if (sql_result->error == NULL) - result.ret = sql_dict_transaction_has_nonexistent(ctx) ? 0 : 1; + result.ret = sql_dict_transaction_has_nonexistent(ctx) ? + DICT_COMMIT_RET_NOTFOUND : DICT_COMMIT_RET_OK; else { result.error = t_strdup_printf("sql dict: commit failed: %s", sql_result->error); - result.ret = -1; + result.ret = DICT_COMMIT_RET_FAILED; } if (ctx->async_callback != NULL) @@ -822,7 +823,7 @@ sql_dict_transaction_commit(struct dict_transaction_context *_ctx, bool async, struct dict_commit_result result; memset(&result, 0, sizeof(result)); - result.ret = -1; + result.ret = DICT_COMMIT_RET_FAILED; result.error = t_strdup(ctx->error); if (ctx->prev_inc_map != NULL) @@ -833,7 +834,7 @@ sql_dict_transaction_commit(struct dict_transaction_context *_ctx, bool async, } else if (!_ctx->changed) { /* nothing changed, no need to commit */ sql_transaction_rollback(&ctx->sql_ctx); - result.ret = 1; + result.ret = DICT_COMMIT_RET_OK; } else if (async) { ctx->async_callback = callback; ctx->async_context = context; @@ -845,9 +846,9 @@ sql_dict_transaction_commit(struct dict_transaction_context *_ctx, bool async, "sql dict: commit failed: %s", error); } else { if (sql_dict_transaction_has_nonexistent(ctx)) - result.ret = 0; + result.ret = DICT_COMMIT_RET_NOTFOUND; else - result.ret = 1; + result.ret = DICT_COMMIT_RET_OK; } sql_dict_transaction_free(ctx); diff --git a/src/lib-dict/dict.h b/src/lib-dict/dict.h index 64501182ba..7bdd6d1cf2 100644 --- a/src/lib-dict/dict.h +++ b/src/lib-dict/dict.h @@ -44,8 +44,14 @@ struct dict_lookup_result { const char *error; }; +enum dict_commit_ret { + DICT_COMMIT_RET_OK = 1, + DICT_COMMIT_RET_NOTFOUND = 0, + DICT_COMMIT_RET_FAILED = -1, +}; + struct dict_commit_result { - int ret; + enum dict_commit_ret ret; const char *error; };