From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 90DAE1FF0B2 for ; Mon, 24 Aug 2026 10:58:35 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 2F8F3216F4; Mon, 24 Aug 2026 10:57:24 +0200 (CEST) From: Daniel Kral To: pve-devel@lists.proxmox.com Subject: [PATCH cluster 04/12] pmxcfs: server: simplify ipc message response logic Date: Mon, 24 Aug 2026 10:56:03 +0200 Message-ID: <20260824085610.111211-6-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260824085610.111211-2-d.kral@proxmox.com> References: <20260824085610.111211-2-d.kral@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1787561806216 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.962 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: CYQNCSSE6R2IUDX5M7PQPUM5FSR6STBP X-Message-ID-Hash: CYQNCSSE6R2IUDX5M7PQPUM5FSR6STBP X-MailFrom: d.kral@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: The response should always be empty for negative results. Simplify the logic here to truncate the response string to remove the unnecessary `resp` and `resp_data_len` variables. This is done in preparation of the following patch, which reports and discards the response data if the response data exceeds the maximum message size allowed by the client's buffer. No functional changes intended. Signed-off-by: Daniel Kral --- src/pmxcfs/server.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/pmxcfs/server.c b/src/pmxcfs/server.c index 22e812c..abe1bee 100644 --- a/src/pmxcfs/server.c +++ b/src/pmxcfs/server.c @@ -171,8 +171,6 @@ static int32_t s1_msg_process_fn(qb_ipcs_connection_t *c, void *data, size_t siz int32_t request_size __attribute__((aligned(8))) = req_pt->size; cfs_debug("process msg:%d, size:%d", request_id, request_size); - char *resp = NULL; - g_string_truncate(outbuf, 0); int32_t result = -ECHRNG; @@ -451,24 +449,23 @@ static int32_t s1_msg_process_fn(qb_ipcs_connection_t *c, void *data, size_t siz cfs_debug("process result %d", result); - if (result >= 0) { - resp = outbuf->str; + /* Do not send the response body in case of an error */ + if (result < 0) { + g_string_truncate(outbuf, 0); } int iov_len = 2; struct iovec iov[iov_len]; struct qb_ipc_response_header res_header; - int resp_data_len = resp ? outbuf->len : 0; - res_header.id = request_id; - res_header.size = sizeof(res_header) + resp_data_len; + res_header.size = sizeof(res_header) + outbuf->len; res_header.error = result; iov[0].iov_base = (char *)&res_header; iov[0].iov_len = sizeof(res_header); - iov[1].iov_base = resp; - iov[1].iov_len = resp_data_len; + iov[1].iov_base = outbuf->str; + iov[1].iov_len = outbuf->len; ssize_t res = qb_ipcs_response_sendv(c, iov, iov_len); if (res < 0) { -- 2.47.3