diff options
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | doc/user.xml | 13 | ||||
-rw-r--r-- | src/db/plugins/ProxyDatabasePlugin.cxx | 6 |
3 files changed, 21 insertions, 0 deletions
@@ -21,6 +21,8 @@ ver 0.20 (not yet released) * reset song priority on playback * write database and state file atomically * remove dependency on GLib +* database + - proxy: add TCP keepalive option ver 0.19.8 (2015/01/14) * input diff --git a/doc/user.xml b/doc/user.xml index 74c169c11..e5061f1ca 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -1530,6 +1530,19 @@ buffer_size: 16384</programlisting> <application>MPD</application> instance. </entry> </row> + <row> + <entry> + <varname>keepalive</varname> + <parameter>yes|no</parameter> + </entry> + <entry> + Send TCP keepalive packets to the "master" + <application>MPD</application> instance? This option can + help avoid certain firewalls dropping inactive + connections, at the expensive of a very small amount of + additional network traffic. Disabled by default. + </entry> + </row> </tbody> </tgroup> </informaltable> diff --git a/src/db/plugins/ProxyDatabasePlugin.cxx b/src/db/plugins/ProxyDatabasePlugin.cxx index 01848690c..f7518c7ab 100644 --- a/src/db/plugins/ProxyDatabasePlugin.cxx +++ b/src/db/plugins/ProxyDatabasePlugin.cxx @@ -71,6 +71,7 @@ class ProxyDatabase final : public Database, SocketMonitor, IdleMonitor { std::string host; unsigned port; + bool keepalive; struct mpd_connection *connection; @@ -336,6 +337,7 @@ ProxyDatabase::Configure(const config_param ¶m, gcc_unused Error &error) { host = param.GetBlockValue("host", ""); port = param.GetBlockValue("port", 0u); + keepalive = param.GetBlockValue("keepalive", false); return true; } @@ -376,6 +378,10 @@ ProxyDatabase::Connect(Error &error) return false; } +#if LIBMPDCLIENT_CHECK_VERSION(2, 10, 0) + mpd_connection_set_keepalive(connection, keepalive); +#endif + idle_received = unsigned(-1); is_idle = false; |