protocol: add command "binarylimit"

Increasing the protocol version to 0.22.4 to allow clients to detect
this feature.

Closes https://github.com/MusicPlayerDaemon/MPD/issues/1038
This commit is contained in:
Max Kellermann
2021-01-21 16:27:52 +01:00
parent 6e33566cee
commit 995aafe9cc
10 changed files with 66 additions and 25 deletions

View File

@@ -84,6 +84,12 @@ public:
*/
TagMask tag_mask = TagMask::All();
/**
* The maximum number of bytes transmitted in a binary
* response. Can be changed with the "binarylimit" command.
*/
size_t binary_limit = 8192;
private:
static constexpr size_t MAX_SUBSCRIPTIONS = 16;
@@ -122,6 +128,7 @@ public:
~Client() noexcept;
using FullyBufferedSocket::GetEventLoop;
using FullyBufferedSocket::GetOutputMaxSize;
gcc_pure
bool IsExpired() const noexcept {

View File

@@ -59,7 +59,7 @@ Response::Format(const char *fmt, ...) noexcept
bool
Response::WriteBinary(ConstBuffer<void> payload) noexcept
{
assert(payload.size <= MAX_BINARY_SIZE);
assert(payload.size <= client.binary_limit);
return Format("binary: %zu\n", payload.size) &&
Write(payload.data, payload.size) &&

View File

@@ -79,8 +79,6 @@ public:
gcc_printf(2,3)
bool Format(const char *fmt, ...) noexcept;
static constexpr size_t MAX_BINARY_SIZE = 8192;
/**
* Write a binary chunk; this writes the "binary" line, the
* given chunk and the trailing newline.