From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id A345A1FF14F for ; Fri, 08 May 2026 18:34:17 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id D89161F4F7; Fri, 8 May 2026 18:32:42 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Subject: [PATCH pve-manager v6 18/24] sdn: do not fail rendering record data if pending property is missing Date: Fri, 8 May 2026 18:31:27 +0200 Message-ID: <20260508163134.481912-19-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260508163134.481912-1-s.hanreich@proxmox.com> References: <20260508163134.481912-1-s.hanreich@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1778257795444 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.632 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment 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: LCO5OZDA3JP6GYBDIHRF45MVOQQRVR3U X-Message-ID-Hash: LCO5OZDA3JP6GYBDIHRF45MVOQQRVR3U X-MailFrom: s.hanreich@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 render helpers for the SDN pending status fail on rendering the values of the columns if the pending property does not exist. With the introduction of the prefix lists endpoint, where the API returns the id and the state of the prefix list only, but not the pending changes, the function fails silently and the error is swallowed by ExtJS. Handle this situation more gracefully by adding null checks when accessing the properties of the passed record. Signed-off-by: Stefan Hanreich --- www/manager6/Utils.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js index be95d2167..220a033d3 100644 --- a/www/manager6/Utils.js +++ b/www/manager6/Utils.js @@ -193,13 +193,14 @@ Ext.define('PVE.Utils', { } else { return `${Ext.htmlEncode(value)}`; } - } else if (rec.data.pending[key] !== undefined && rec.data.pending[key] !== null) { + } else if (rec.data?.pending?.[key] !== undefined && rec.data?.pending?.[key] !== null) { if (rec.data.pending[key] === 'deleted') { return ' '; } else { return Ext.htmlEncode(rec.data.pending[key]); } } + return Ext.htmlEncode(value); }, @@ -216,7 +217,7 @@ Ext.define('PVE.Utils', { let tip = gettext('Pending Changes') + ':
'; - for (const [key, keyvalue] of Object.entries(rec.data.pending)) { + for (const [key, keyvalue] of Object.entries(rec.data.pending ?? {})) { if ( (rec.data[key] !== undefined && rec.data.pending[key] !== rec.data[key]) || rec.data[key] === undefined -- 2.47.3