aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--NEWS2
-rw-r--r--src/ClientRead.cxx5
-rw-r--r--src/command/CommandResult.hxx6
-rw-r--r--src/command/OtherCommands.cxx2
4 files changed, 14 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index d3465bf65..8a2d62609 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,6 @@
ver 0.18.2 (2013/??/??)
+* protocol:
+ - "close" flushes the output buffer
* input:
- curl: fix bug with redirected streams
* playlist:
diff --git a/src/ClientRead.cxx b/src/ClientRead.cxx
index 925e1502d..22edefe60 100644
--- a/src/ClientRead.cxx
+++ b/src/ClientRead.cxx
@@ -57,6 +57,11 @@ Client::OnSocketInput(void *data, size_t length)
main_loop->Break();
return InputResult::CLOSED;
+ case CommandResult::FINISH:
+ if (Flush())
+ Close();
+ return InputResult::CLOSED;
+
case CommandResult::CLOSE:
Close();
return InputResult::CLOSED;
diff --git a/src/command/CommandResult.hxx b/src/command/CommandResult.hxx
index bbc16146b..9916b70cb 100644
--- a/src/command/CommandResult.hxx
+++ b/src/command/CommandResult.hxx
@@ -48,6 +48,12 @@ enum class CommandResult {
ERROR,
/**
+ * The client has asked MPD to close the connection. MPD will
+ * flush the remaining output buffer first.
+ */
+ FINISH,
+
+ /**
* The connection to this client shall be closed.
*/
CLOSE,
diff --git a/src/command/OtherCommands.cxx b/src/command/OtherCommands.cxx
index 75faa4dc2..7b2cb1331 100644
--- a/src/command/OtherCommands.cxx
+++ b/src/command/OtherCommands.cxx
@@ -99,7 +99,7 @@ CommandResult
handle_close(gcc_unused Client &client,
gcc_unused int argc, gcc_unused char *argv[])
{
- return CommandResult::CLOSE;
+ return CommandResult::FINISH;
}
CommandResult