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.
This commit is contained in:
Max Kellermann 2013-11-06 22:01:06 +01:00
parent 422b8472fe
commit fd2eafa7c6
4 changed files with 14 additions and 1 deletions

2
NEWS
View File

@ -1,4 +1,6 @@
ver 0.18.2 (2013/??/??)
* protocol:
- "close" flushes the output buffer
* input:
- curl: fix bug with redirected streams
* playlist:

View File

@ -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;

View File

@ -47,6 +47,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.
*/

View File

@ -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