From bcd3a658fc3b2ad735146fdc9efefa9462d195b7 Mon Sep 17 00:00:00 2001 From: BeaCox Date: Fri, 3 Jul 2026 21:17:07 +0800 Subject: [PATCH] fix: use local clipboard limit for client receive --- src/lib/client/Client.cpp | 9 ++++++--- src/lib/client/Client.h | 3 ++- src/lib/client/ServerProxy.cpp | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/lib/client/Client.cpp b/src/lib/client/Client.cpp index 935c380a1..673e2bd68 100644 --- a/src/lib/client/Client.cpp +++ b/src/lib/client/Client.cpp @@ -45,7 +45,10 @@ Client::Client( m_socketFactory(socketFactory), m_screen(screen), m_events(events), - m_useSecureNetwork(Settings::value(Settings::Security::TlsEnabled).toBool()) + m_useSecureNetwork(Settings::value(Settings::Security::TlsEnabled).toBool()), + m_maximumClipboardReceiveSize( + static_cast(Settings::value(Settings::Server::ClipboardSize).toUInt()) * 1024 * 1024 + ) { assert(m_socketFactory != nullptr); assert(m_screen != nullptr); @@ -175,9 +178,9 @@ NetworkAddress Client::getServerAddress() const return m_serverAddress; } -size_t Client::getMaximumClipboardSizeBytes() const +size_t Client::getMaximumClipboardReceiveSizeBytes() const { - return m_maximumClipboardSize * 1024; + return m_maximumClipboardReceiveSize; } void *Client::getEventTarget() const diff --git a/src/lib/client/Client.h b/src/lib/client/Client.h index b1954130c..428f7a253 100644 --- a/src/lib/client/Client.h +++ b/src/lib/client/Client.h @@ -126,7 +126,7 @@ public: { return m_resolvedAddressesCount; } - size_t getMaximumClipboardSizeBytes() const; + size_t getMaximumClipboardReceiveSizeBytes() const; //@} @@ -206,6 +206,7 @@ private: bool m_hasRelativeRestorePosition = false; int32_t m_relativeRestoreX = 0; int32_t m_relativeRestoreY = 0; + size_t m_maximumClipboardReceiveSize = 0; size_t m_maximumClipboardSize = INT_MAX; size_t m_resolvedAddressesCount = 0; }; diff --git a/src/lib/client/ServerProxy.cpp b/src/lib/client/ServerProxy.cpp index 555be346b..abcc44525 100644 --- a/src/lib/client/ServerProxy.cpp +++ b/src/lib/client/ServerProxy.cpp @@ -534,7 +534,7 @@ void ServerProxy::setClipboard() uint32_t seq; auto r = ClipboardChunk::assemble( - m_stream, m_clipboardDataCached, id, seq, m_clipboardChunkState, m_client->getMaximumClipboardSizeBytes() + m_stream, m_clipboardDataCached, id, seq, m_clipboardChunkState, m_client->getMaximumClipboardReceiveSizeBytes() ); if (r == TransferState::Started) {