Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package krdp6 for openSUSE:Factory checked in at 2026-02-27 17:03:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/krdp6 (Old) and /work/SRC/openSUSE:Factory/.krdp6.new.29461 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "krdp6" Fri Feb 27 17:03:58 2026 rev:34 rq:1334948 version:6.6.1 Changes: -------- --- /work/SRC/openSUSE:Factory/krdp6/krdp6.changes 2026-02-16 13:11:56.744589570 +0100 +++ /work/SRC/openSUSE:Factory/.krdp6.new.29461/krdp6.changes 2026-02-27 17:09:06.270112260 +0100 @@ -1,0 +2,10 @@ +Tue Feb 24 17:20:31 UTC 2026 - Fabian Vogt <[email protected]> + +- Update to 6.6.1: + * New bugfix release + * For more details see https://kde.org/announcements/plasma/6/6.6.1 +- Changes since 6.6.0: + * Update version for new release 6.6.1 + * Fix server-to-client clipboard (CLIPRDR) for RDP clients + +------------------------------------------------------------------- Old: ---- krdp-6.6.0.tar.xz krdp-6.6.0.tar.xz.sig New: ---- krdp-6.6.1.tar.xz krdp-6.6.1.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ krdp6.spec ++++++ --- /var/tmp/diff_new_pack.PfcuXh/_old 2026-02-27 17:09:07.498163197 +0100 +++ /var/tmp/diff_new_pack.PfcuXh/_new 2026-02-27 17:09:07.498163197 +0100 @@ -27,14 +27,14 @@ %{!?_plasma6_version: %define _plasma6_version %(echo %{_plasma6_bugfix} | awk -F. '{print $1"."$2}')} %bcond_without released Name: krdp6 -Version: 6.6.0 +Version: 6.6.1 Release: 0 Summary: RDP Server for Plasma License: LGPL-2.1-or-later URL: https://invent.kde.org/plasma/krdp -Source: %{rname}-%{version}.tar.xz +Source: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz %if %{with released} -Source1: %{rname}-%{version}.tar.xz.sig +Source1: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz.sig Source2: plasma.keyring %endif BuildRequires: kf6-extra-cmake-modules >= %{kf6_version} ++++++ krdp-6.6.0.tar.xz -> krdp-6.6.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krdp-6.6.0/CMakeLists.txt new/krdp-6.6.1/CMakeLists.txt --- old/krdp-6.6.0/CMakeLists.txt 2026-02-12 11:03:04.000000000 +0100 +++ new/krdp-6.6.1/CMakeLists.txt 2026-02-24 10:38:15.000000000 +0100 @@ -1,7 +1,7 @@ # SPDX-FileCopyrightText: 2023 Arjen Hiemstra <[email protected]> # SPDX-License-Identifier: BSD-2-Clause -set(PROJECT_VERSION "6.6.0") +set(PROJECT_VERSION "6.6.1") cmake_minimum_required(VERSION 3.16) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krdp-6.6.0/src/Clipboard.cpp new/krdp-6.6.1/src/Clipboard.cpp --- old/krdp-6.6.0/src/Clipboard.cpp 2026-02-12 11:03:04.000000000 +0100 +++ new/krdp-6.6.1/src/Clipboard.cpp 2026-02-24 10:38:15.000000000 +0100 @@ -111,7 +111,7 @@ return false; } - d->clipContext->useLongFormatNames = FALSE; + d->clipContext->useLongFormatNames = TRUE; d->clipContext->streamFileClipEnabled = FALSE; d->clipContext->fileClipNoFilePaths = FALSE; d->clipContext->canLockClipData = FALSE; @@ -176,12 +176,15 @@ return; } - CLIPRDR_FORMAT_LIST formatList; + CLIPRDR_FORMAT format = {}; + format.formatId = CF_UNICODETEXT; + format.formatName = nullptr; + + CLIPRDR_FORMAT_LIST formatList = {}; formatList.common.msgType = CB_FORMAT_LIST; formatList.common.msgFlags = 0; formatList.numFormats = 1; - formatList.formats = reinterpret_cast<CLIPRDR_FORMAT *>(malloc(sizeof(CLIPRDR_FORMAT))); - formatList.formats[0].formatId = CF_UNICODETEXT; + formatList.formats = &format; d->clipContext->ServerFormatList(d->clipContext.get(), &formatList); } @@ -204,6 +207,12 @@ } } + // Acknowledge the client's format list (required by CLIPRDR protocol) + CLIPRDR_FORMAT_LIST_RESPONSE response = {}; + response.common.msgType = CB_FORMAT_LIST_RESPONSE; + response.common.msgFlags = CB_RESPONSE_OK; + clipContext->ServerFormatListResponse(clipContext.get(), &response); + return CHANNEL_RC_OK; } @@ -215,14 +224,24 @@ uint32_t Clipboard::Private::onClientFormatDataRequest(const CLIPRDR_FORMAT_DATA_REQUEST *formatDataRequest) { if (!serverData || formatDataRequest->requestedFormatId != CF_UNICODETEXT) { + CLIPRDR_FORMAT_DATA_RESPONSE response = {}; + response.common.msgType = CB_FORMAT_DATA_RESPONSE; + response.common.msgFlags = CB_RESPONSE_FAIL; + response.common.dataLen = 0; + response.requestedFormatData = nullptr; + clipContext->ServerFormatDataResponse(clipContext.get(), &response); return CHANNEL_RC_OK; } - auto data = serverData->text().toStdU16String(); - - CLIPRDR_FORMAT_DATA_RESPONSE response{ - .common = CLIPRDR_HEADER({.msgType = CB_FORMAT_DATA_RESPONSE, .msgFlags = CB_RESPONSE_OK, .dataLen = uint32_t(data.length()) * 2}), - .requestedFormatData = reinterpret_cast<BYTE *>(data.data())}; + auto text = serverData->text(); + // CF_UNICODETEXT requires null-terminated UTF-16LE + QByteArray utf16Data(reinterpret_cast<const char *>(text.utf16()), (text.length() + 1) * 2); + + CLIPRDR_FORMAT_DATA_RESPONSE response = {}; + response.common.msgType = CB_FORMAT_DATA_RESPONSE; + response.common.msgFlags = CB_RESPONSE_OK; + response.common.dataLen = utf16Data.size(); + response.requestedFormatData = reinterpret_cast<const BYTE *>(utf16Data.constData()); clipContext->ServerFormatDataResponse(clipContext.get(), &response); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/krdp-6.6.0/src/Clipboard.h new/krdp-6.6.1/src/Clipboard.h --- old/krdp-6.6.0/src/Clipboard.h 2026-02-12 11:03:04.000000000 +0100 +++ new/krdp-6.6.1/src/Clipboard.h 2026-02-24 10:38:15.000000000 +0100 @@ -24,11 +24,6 @@ Q_OBJECT public: - /** - * TODO: This clipboard is currently not implemented. It only - * works as a dummy clipboard that does nothing to avoid crashes if - * cliprdr channel is opened. - */ explicit Clipboard(RdpConnection *session); ~Clipboard() override;
