]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict: Pass through dict_lookup() error from dict server to client
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 6 May 2016 09:59:38 +0000 (12:59 +0300)
committerGitLab <gitlab@git.dovecot.net>
Sun, 8 May 2016 21:29:56 +0000 (00:29 +0300)
src/dict/dict-commands.c
src/lib-dict/dict-client.c

index f38e1976bf96d57f7eb4d6a059adf91aff7a8e71..43e0d931020c4b4e776b2322cabadeb9669468fe 100644 (file)
@@ -90,7 +90,8 @@ cmd_lookup_callback(const struct dict_lookup_result *result, void *context)
                cmd->reply = i_strdup_printf("%c\n", DICT_PROTOCOL_REPLY_NOTFOUND);
        } else {
                i_error("%s", result->error);
-               cmd->reply = i_strdup_printf("%c\n", DICT_PROTOCOL_REPLY_FAIL);
+               cmd->reply = i_strdup_printf("%c%s\n", DICT_PROTOCOL_REPLY_FAIL,
+                                            str_tabescape(result->error));
        }
        dict_connection_cmds_flush(cmd->conn);
 }
index 157273e59af89b60c96b0328963028e486d51caf..7a384c15df52134d35588a3a35999b01b0a07dd9 100644 (file)
@@ -621,7 +621,9 @@ static int client_dict_lookup(struct dict *_dict, pool_t pool, const char *key,
                *value_r = NULL;
                return 0;
        case DICT_PROTOCOL_REPLY_FAIL:
-               *error_r = "dict-server returned failure";
+               *error_r = line[1] == '\0' ? "dict-server returned failure" :
+                       t_strdup_printf("dict-server returned failure: %s",
+                       dict_client_unescape(line+1));
                return -1;
        default:
                *error_r = t_strdup_printf(