From 7bb3987acc264457920ac596d2c81c338a651ca2 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 30 Oct 2013 16:02:44 +0100 Subject: db/proxy: return server errors using "enum ack" --- src/db/ProxyDatabasePlugin.cxx | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/db') diff --git a/src/db/ProxyDatabasePlugin.cxx b/src/db/ProxyDatabasePlugin.cxx index 05d023668..4c8498d69 100644 --- a/src/db/ProxyDatabasePlugin.cxx +++ b/src/db/ProxyDatabasePlugin.cxx @@ -31,6 +31,7 @@ #include "tag/TagBuilder.hxx" #include "util/Error.hxx" #include "util/Domain.hxx" +#include "protocol/Ack.hxx" #undef MPD_DIRECTORY_H #undef MPD_SONG_H @@ -120,8 +121,18 @@ CheckError(struct mpd_connection *connection, Error &error) if (code == MPD_ERROR_SUCCESS) return true; - error.Set(libmpdclient_domain, (int)code, - mpd_connection_get_error_message(connection)); + if (code == MPD_ERROR_SERVER) { + /* libmpdclient's "enum mpd_server_error" is the same + as our "enum ack" */ + const auto server_error = + mpd_connection_get_server_error(connection); + error.Set(ack_domain, (int)server_error, + mpd_connection_get_error_message(connection)); + } else { + error.Set(libmpdclient_domain, (int)code, + mpd_connection_get_error_message(connection)); + } + mpd_connection_clear_error(connection); return false; } -- cgit v1.2.3