diff --git a/NEWS b/NEWS index abbe1d376..67b94eaea 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,11 @@ ver 0.21 (not yet released) - opus: support for sending metadata using ogg stream chaining * require GCC 5.0 +ver 0.20.21 (not yet released) +* database + - proxy: add "password" setting + - proxy: support tags "ArtistSort", "AlbumArtistSort", "AlbumSort" + ver 0.20.20 (2018/05/22) * protocol - fix "modified-since" filter regression diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index acdf78a17..09536d9c1 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="20" + android:versionName="0.20.21"> diff --git a/doc/user.xml b/doc/user.xml index f63ed2a0a..bc2e76e89 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -2115,13 +2115,6 @@ run database. - - Note that unless overridden by the below settings (e.g. by - setting them to a blank value), general curl configuration - from environment variables such as http_proxy or specified - in ~/.curlrc will be in effect. - - @@ -2149,6 +2142,15 @@ run MPD instance. + + + password + + + The password used to log in to the "master" + MPD instance. + + keepalive diff --git a/src/db/plugins/ProxyDatabasePlugin.cxx b/src/db/plugins/ProxyDatabasePlugin.cxx index a33e02ca8..6181110ab 100644 --- a/src/db/plugins/ProxyDatabasePlugin.cxx +++ b/src/db/plugins/ProxyDatabasePlugin.cxx @@ -84,6 +84,7 @@ class ProxyDatabase final : public Database, SocketMonitor, IdleMonitor { DatabaseListener &listener; const std::string host; + const std::string password; const unsigned port; const bool keepalive; @@ -176,6 +177,13 @@ static constexpr struct { #if LIBMPDCLIENT_CHECK_VERSION(2,10,0) { TAG_MUSICBRAINZ_RELEASETRACKID, MPD_TAG_MUSICBRAINZ_RELEASETRACKID }, +#endif +#if LIBMPDCLIENT_CHECK_VERSION(2,11,0) + { TAG_ARTIST_SORT, MPD_TAG_ARTIST_SORT }, + { TAG_ALBUM_ARTIST_SORT, MPD_TAG_ALBUM_ARTIST_SORT }, +#endif +#if LIBMPDCLIENT_CHECK_VERSION(2,12,0) + { TAG_ALBUM_SORT, MPD_TAG_ALBUM_SORT }, #endif { TAG_NUM_OF_ITEM_TYPES, MPD_TAG_COUNT } }; @@ -371,6 +379,7 @@ ProxyDatabase::ProxyDatabase(EventLoop &_loop, DatabaseListener &_listener, SocketMonitor(_loop), IdleMonitor(_loop), listener(_listener), host(block.GetBlockValue("host", "")), + password(block.GetBlockValue("password", "")), port(block.GetBlockValue("port", 0u)), keepalive(block.GetBlockValue("keepalive", false)) { @@ -415,6 +424,10 @@ ProxyDatabase::Connect() try { CheckError(connection); + + if (!password.empty() && + !mpd_run_password(connection, password.c_str())) + ThrowError(connection); } catch (...) { mpd_connection_free(connection); connection = nullptr;