aboutsummaryrefslogtreecommitdiffstats
path: root/src/ClientRead.cxx
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-11-06 22:01:06 +0100
committerMax Kellermann <max@duempel.org>2013-11-06 22:01:06 +0100
commitfd2eafa7c67e0efdae7d3d18c39b97f724372f7e (patch)
tree391bc672c8ec24a728a163ce9ed8026287d0f039 /src/ClientRead.cxx
parent422b8472fec9443250895a281b6b0a20190daa22 (diff)
downloadmpd-fd2eafa7c67e0efdae7d3d18c39b97f724372f7e.tar.gz
mpd-fd2eafa7c67e0efdae7d3d18c39b97f724372f7e.tar.xz
mpd-fd2eafa7c67e0efdae7d3d18c39b97f724372f7e.zip
ClientRead: "close" flushes the output buffer
Add a new CommandResult code called "FINISH" which, unlike "CLOSE", will attempt to flush the output buffer. This is a one-shot attempt; it will do one write, and not try again.
Diffstat (limited to 'src/ClientRead.cxx')
-rw-r--r--src/ClientRead.cxx5
1 files changed, 5 insertions, 0 deletions
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;