From 1d8544ef3b93d2a7b22e6bcbb47b19f2a0353eb1 Mon Sep 17 00:00:00 2001 From: Joshua Wise Date: Thu, 15 Jan 2015 14:33:10 -0800 Subject: [PATCH] db/plugins/ProxyDatabasePlugin: add "keepalive" parameter --- NEWS | 2 ++ doc/user.xml | 13 +++++++++++++ src/db/plugins/ProxyDatabasePlugin.cxx | 6 ++++++ 3 files changed, 21 insertions(+) diff --git a/NEWS b/NEWS index 17103fd4f..b8a460938 100644 --- a/NEWS +++ b/NEWS @@ -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 MPD instance. + + + keepalive + yes|no + + + Send TCP keepalive packets to the "master" + MPD 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. + + 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;