db/proxy: return server errors using "enum ack"

This commit is contained in:
Max Kellermann 2013-10-30 16:02:44 +01:00
parent 6a147a17af
commit 7bb3987acc

View File

@ -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;
}