From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 52EE89414AC for ; Thu, 29 Feb 2024 08:55:03 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=ve5Ci04BPqvhyYToa5sccWyY1TXmt+IlsnCD/bevts4=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:Received-SPF:From:To:CC:Subject:Date:Message-ID:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding:Content-Type; s=20140610; t=1709196902; v=1; b=FWF+UKRf7D7kLbnxNwd/3XSQwSmWGzObIoB6PAod1e8fp/WG/OgbArsAbQ0x1vIB2tBNAa3Z 4ONUzV+rklKPOUof6siK+9N5NpMoJQJs/Ea9wdzBdFLn/OTCQsfmTRusbY276yyOISVur/Lp8kr ZvZUz/BMw1OUJMAo7SmUe5lo= X-Received: by 127.0.0.2 with SMTP id OjX4YY7687511xbu0sc8JAOO; Thu, 29 Feb 2024 00:55:02 -0800 X-Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.107.237.63]) by mx.groups.io with SMTP id smtpd.web10.20240.1709196901416933503 for ; Thu, 29 Feb 2024 00:55:01 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gw1iB8cFX5jofHbA0FLKW13YWpSDN3si/uE4Pz1EUcq5JcbH0yaZkkdy+B9bvRxynQqCjpoqqCNt9LZP8L60ZkkQafR4emIarivWvuh+FOcdoEdcGGXJBTvrhl4kW+W2aVEk0FGcj2821NJS4oJpEAT4NM7cDY6JhS7dFRFAjf8ahq7D1nl6ksr2KW7Lzo5UF12Ime3mekJSeQaIDuHKh7nGVyTGnJFlLOLdCMUWmSiPr50N0zYGwbCWRIxGiiFFHWZIbHZMySmLLZ5TPjzyPqIrSIXSU9nzVC8m6momquV8L5u9zIJjFD9oqew4LhVYbTYuqWPiSUAo7jwCnOH/2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gp+gZ8I0yZ4y3vEClPegFb00b6pQDbV/auW2PHe8CiQ=; b=GVxdVjeRovSgH/Q/BIt851QAH3vEFtGQEHN45riqB5tNbESi2fHNAeSFe8L7cAjmloboRHrW407V1k8TgQRR1JHbCRbcJycVUWuYhGWxhy+b84GGqKKCep8Kgi4JsMotI5S1Hc3TEJS8CXkwuWVrfF63a/gOJS3IiM3nIK64G1YArO6L3+AlUjFvsPHqCFcFB1xwqo3z/6mSM5v3BD/YpDM+Omv1yN0yhW7TbWNTeg4bpvYzJeHoegG0GrRzcCKf/35owfGAbKjwK5OvfiMBtVBH2ankW66+Jk42uY4XCH10OOXs+VVjO+awbZq5eCwWbIJ1jsTo1KcbQZHLzdHHVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) X-Received: from MW4PR04CA0044.namprd04.prod.outlook.com (2603:10b6:303:6a::19) by LV2PR12MB5845.namprd12.prod.outlook.com (2603:10b6:408:176::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.39; Thu, 29 Feb 2024 08:54:57 +0000 X-Received: from CO1PEPF000042AC.namprd03.prod.outlook.com (2603:10b6:303:6a:cafe::e4) by MW4PR04CA0044.outlook.office365.com (2603:10b6:303:6a::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7339.32 via Frontend Transport; Thu, 29 Feb 2024 08:54:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (216.228.118.232) by CO1PEPF000042AC.mail.protection.outlook.com (10.167.243.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Thu, 29 Feb 2024 08:54:56 +0000 X-Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Thu, 29 Feb 2024 00:54:36 -0800 X-Received: from drhqmail201.nvidia.com (10.126.190.180) by drhqmail201.nvidia.com (10.126.190.180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Thu, 29 Feb 2024 00:54:35 -0800 X-Received: from NV-CL38DL3.nvidia.com (10.127.8.13) by mail.nvidia.com (10.126.190.180) with Microsoft SMTP Server id 15.2.1258.12 via Frontend Transport; Thu, 29 Feb 2024 00:54:35 -0800 From: "Nickle Wang via groups.io" To: CC: Abner Chang , Igor Kulchytskyy Subject: [edk2-devel] [edk2-redfish-client][PATCH 07/13] RedfishClientPkg/BiosDxe: ues RedfishHttpLib Date: Thu, 29 Feb 2024 16:54:34 +0800 Message-ID: <20240229085434.112448-1-nicklew@nvidia.com> MIME-Version: 1.0 X-NVConfidentiality: public X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000042AC:EE_|LV2PR12MB5845:EE_ X-MS-Office365-Filtering-Correlation-Id: a73d2ca8-7ceb-40f0-8af9-08dc39041ab4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: 3WyKWMwwBAaXh4RDwvm/KXUQ7TBtT/MQHDT7ghRQv81fCE+UKY4l3AEkutVzoIsvCmgBDepBdhGb7XHpAYTpJPQ+qybvnMgGq/zJ8nHsQmrtc1qbrHwGGp4zLyYDaw3yaKVeAQJJ4WaIhKiVEsDcykECtFu5RN+b236Eb6WwIk9NJJxKlEBNo4nkR7bKmCVM87HoV+5aPfliYzvjahVb4+nzXSHJwBgLi2eLJnjVxYsieSOERVvC9cnryOQ/ccFSGBsuZI2H4AgEVU8WttZ/cCtpaEPSjJzLwWMK0sDSIwwa0ON/UkdlMjOL+dbZtzrzIZ62QkXVkB6xS0Zl2hRniWggT8iYYwIhJ83Qt/Wosuwr2nXuI3GEl53Xs3E60eiAgQk52H00DBj+Trk4kvX7ffJI2WEJDa6IpfSaDGV2Ro1MMT9NlSax2MDQFBAS/UkJXDJe8z7hHn4FVkShGEQ0pJv1Nb9z0evmJgS2GrIy+/sgpWMBnpWbFd4g6BFRDTPb72NcAWUyS0FUdajfauDpYUI4YwlG1TTF9e79AzB/mu4JNm5P8mROvLXsbHYSpeW6McBFF7jugsHwD7h7uaK/NrCiMXhFkxaREyc0myEKRZ+XbV5eqJQhYAqNG8QOnl7oT4ZBVOJJ/+Ciw5oemxilRLq9h1xHLbmJu3J7qpZCgE9IxEBapGzf1a9z0Qrq/VLWK9rHUefSJD+pweB2vqmeXOnjngBUrp26MUPiAzwGcagJTAa/bfIBXHgsTSnVO09R X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Feb 2024 08:54:56.9678 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a73d2ca8-7ceb-40f0-8af9-08dc39041ab4 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[216.228.118.232];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000042AC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5845 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,nicklew@nvidia.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 57nJPHuL0qe3Q4430CgUPB4sx7686176AA= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=FWF+UKRf; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Use EDK2 RedfishHttpLib to replace RedfishHttpCacheLib and RedfishLib Signed-off-by: Nickle Wang Cc: Abner Chang Cc: Igor Kulchytskyy --- .../Features/Bios/v1_0_9/Dxe/BiosDxe.inf | 3 +- .../Features/Bios/v1_0_9/Common/BiosCommon.c | 92 +++++++------- .../Features/Bios/v1_0_9/Dxe/BiosDxe.c | 113 +++++------------- 3 files changed, 74 insertions(+), 134 deletions(-) diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.inf b/Redfis= hClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.inf index 6ba4c3cfa..a2ac18e61 100644 --- a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.inf +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.inf @@ -32,14 +32,13 @@ BaseMemoryLib DebugLib EdkIIRedfishResourceConfigLib - RedfishLib + RedfishHttpLib RedfishFeatureUtilityLib RedfishVersionLib RedfishResourceIdentifyLib UefiLib UefiDriverEntryPoint RedfishAddendumLib - RedfishHttpCacheLib =20 [Protocols] gEdkIIRedfishConfigHandlerProtocolGuid ## PRODUCED diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c b/Re= dfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c index f3f993c87..1f3c30147 100644 --- a/RedfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c @@ -2,7 +2,7 @@ Redfish feature driver implementation - common functions =20 (C) Copyright 2020-2022 Hewlett Packard Enterprise Development LP
- Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved= . + Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights res= erved. =20 SPDX-License-Identifier: BSD-2-Clause-Patent =20 @@ -68,7 +68,7 @@ RedfishConsumeResourceCommon ( // No change // DEBUG ((DEBUG_MANAGEABILITY, "%a, ETAG: %s has no change, ignore consu= me action\n", __func__, Private->Uri)); - Status =3D EFI_ALREADY_STARTED; + Status =3D EFI_SUCCESS; goto ON_RELEASE; } =20 @@ -268,18 +268,18 @@ ProvisioningBiosResource ( IN EFI_STRING ConfigureLang ) { - CHAR8 *Json; - CHAR8 *JsonWithAddendum; - EFI_STATUS Status; - EFI_STRING NewResourceLocation; - CHAR8 *EtagStr; - CHAR8 ResourceId[16]; + CHAR8 *Json; + CHAR8 *JsonWithAddendum; + EFI_STATUS Status; + EFI_STRING NewResourceLocation; + CHAR8 ResourceId[16]; + REDFISH_RESPONSE Response; =20 if (IS_EMPTY_STRING (ConfigureLang) || (Private =3D=3D NULL)) { return EFI_INVALID_PARAMETER; } =20 - EtagStr =3D NULL; + ZeroMem (&Response, sizeof (REDFISH_RESPONSE)); AsciiSPrint (ResourceId, sizeof (ResourceId), "%d", Index); =20 Status =3D ProvisioningBiosProperties ( @@ -327,27 +327,27 @@ ProvisioningBiosResource ( JsonWithAddendum =3D NULL; } =20 - Status =3D CreatePayloadToPostResource (Private->RedfishService, Private= ->Payload, Json, &NewResourceLocation, &EtagStr); + Status =3D RedfishHttpPostResource (Private->RedfishService, Private->Ur= i, Json, &Response); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, post Bios resource for %s failed: %r\n", __f= unc__, ConfigureLang, Status)); goto RELEASE_RESOURCE; } =20 - ASSERT (NewResourceLocation !=3D NULL); - // - // Keep location of new resource. + // Per Redfish spec. the URL of new resource will be returned in "Locati= on" header. // - if (NewResourceLocation !=3D NULL) { - RedfishSetRedfishUri (ConfigureLang, NewResourceLocation); + Status =3D GetHttpResponseLocation (&Response, &NewResourceLocation); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: cannot find new location: %r\n", __func__, S= tatus)); + goto RELEASE_RESOURCE; } =20 // - // Handle Etag + // Keep location of new resource. // - if (EtagStr !=3D NULL) { - SetEtagWithUri (EtagStr, NewResourceLocation); - FreePool (EtagStr); + if (NewResourceLocation !=3D NULL) { + DEBUG ((DEBUG_MANAGEABILITY, "%a: Location: %s\n", __func__, NewResour= ceLocation)); + RedfishSetRedfishUri (ConfigureLang, NewResourceLocation); } =20 RELEASE_RESOURCE: @@ -360,6 +360,8 @@ RELEASE_RESOURCE: FreePool (Json); } =20 + RedfishHttpFreeResponse (&Response); + return Status; } =20 @@ -402,19 +404,19 @@ ProvisioningBiosExistResource ( IN REDFISH_RESOURCE_COMMON_PRIVATE *Private ) { - EFI_STATUS Status; - EFI_STRING ConfigureLang; - CHAR8 *EtagStr; - CHAR8 *Json; - CHAR8 *JsonWithAddendum; + EFI_STATUS Status; + EFI_STRING ConfigureLang; + CHAR8 *Json; + CHAR8 *JsonWithAddendum; + REDFISH_RESPONSE Response; =20 if (Private =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 - EtagStr =3D NULL; Json =3D NULL; ConfigureLang =3D NULL; + ZeroMem (&Response, sizeof (REDFISH_RESPONSE)); =20 ConfigureLang =3D RedfishGetConfigLanguage (Private->Uri); if (ConfigureLang =3D=3D NULL) { @@ -473,23 +475,17 @@ ProvisioningBiosExistResource ( =20 DEBUG ((REDFISH_DEBUG_TRACE, "%a, provisioning existing resource for %s\= n", __func__, ConfigureLang)); // - // PUT back to instance + // PATCH back to instance // - Status =3D CreatePayloadToPatchResource (Private->RedfishService, Privat= e->Payload, Json, &EtagStr); + Status =3D RedfishHttpPatchResource (Private->RedfishService, Private->U= ri, Json, &Response); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, patch resource for %s failed: %r\n", __func_= _, ConfigureLang, Status)); } =20 - // - // Handle Etag - // - if (EtagStr !=3D NULL) { - SetEtagWithUri (EtagStr, Private->Uri); - FreePool (EtagStr); - } - ON_RELEASE: =20 + RedfishHttpFreeResponse (&Response); + if (Json !=3D NULL) { FreePool (Json); } @@ -609,19 +605,19 @@ RedfishUpdateResourceCommon ( IN CHAR8 *InputJson ) { - EFI_STATUS Status; - CHAR8 *Json; - CHAR8 *JsonWithAddendum; - EFI_STRING ConfigureLang; - CHAR8 *EtagStr; + EFI_STATUS Status; + CHAR8 *Json; + CHAR8 *JsonWithAddendum; + EFI_STRING ConfigureLang; + REDFISH_RESPONSE Response; =20 if ((Private =3D=3D NULL) || IS_EMPTY_STRING (InputJson)) { return EFI_INVALID_PARAMETER; } =20 - EtagStr =3D NULL; Json =3D NULL; ConfigureLang =3D NULL; + ZeroMem (&Response, sizeof (REDFISH_RESPONSE)); =20 ConfigureLang =3D RedfishGetConfigLanguage (Private->Uri); if (ConfigureLang =3D=3D NULL) { @@ -680,23 +676,17 @@ RedfishUpdateResourceCommon ( =20 DEBUG ((REDFISH_DEBUG_TRACE, "%a, update resource for %s\n", __func__, C= onfigureLang)); // - // PUT back to instance + // PATCH back to instance // - Status =3D CreatePayloadToPatchResource (Private->RedfishService, Privat= e->Payload, Json, &EtagStr); + Status =3D RedfishHttpPatchResource (Private->RedfishService, Private->U= ri, Json, &Response); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, patch resource for %s failed: %r\n", __func_= _, ConfigureLang, Status)); } =20 - // - // Handle Etag - // - if (EtagStr !=3D NULL) { - SetEtagWithUri (EtagStr, Private->Uri); - FreePool (EtagStr); - } - ON_RELEASE: =20 + RedfishHttpFreeResponse (&Response); + if (Json !=3D NULL) { FreePool (Json); } diff --git a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c b/RedfishC= lientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c index a442d446b..1ca920640 100644 --- a/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c +++ b/RedfishClientPkg/Features/Bios/v1_0_9/Dxe/BiosDxe.c @@ -57,7 +57,7 @@ RedfishResourceProvisioningResource ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -68,20 +68,20 @@ RedfishResourceProvisioningResource ( ASSERT (Private->Payload !=3D NULL); =20 Status =3D RedfishProvisioningResourceCommon (Private, !PostMode); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: failed to provision resource to: %s: %r\n", = __func__, Uri, Status)); + } else { + // + // Get latest ETag on URI and keep it in variable. + // + SetEtagFromUri (Private->RedfishService, Private->Uri, TRUE); + } =20 // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - RedfishHttpResetResource (Uri); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 return Status; } @@ -122,7 +122,7 @@ RedfishResourceConsumeResource ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -131,7 +131,7 @@ RedfishResourceConsumeResource ( // // Check and see if "@Redfish.Settings" exist or not. // - ZeroMem (&PendingSettingResponse, sizeof (REDFISH_RESPONSE)); + ZeroMem (&PendingSettingResponse, sizeof (PendingSettingResponse)); PendingSettingUri =3D NULL; Status =3D GetPendingSettings ( Private->RedfishService, @@ -161,42 +161,15 @@ RedfishResourceConsumeResource ( GetHttpResponseEtag (ExpectedResponse, &Etag); Status =3D RedfishConsumeResourceCommon (Private, Private->Json, Etag); if (EFI_ERROR (Status)) { - if (Status !=3D EFI_ALREADY_STARTED) { - DEBUG ((DEBUG_ERROR, "%a, failed to consume resource from: %s: %r\n"= , __func__, Uri, Status)); - } - } else { - // - // Keep etag after consuming pending settings. - // - if (Etag !=3D NULL) { - SetEtagWithUri (Etag, Private->Uri); - } + DEBUG ((DEBUG_ERROR, "%a: failed to consume resource from: %s: %r\n", = __func__, Private->Uri, Status)); } =20 // // Release resource // - if (Private->Payload !=3D NULL) { - if (Response.Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - } - - if (PendingSettingResponse.Payload !=3D NULL) { - RedfishFreeResponse ( - PendingSettingResponse.StatusCode, - PendingSettingResponse.HeaderCount, - PendingSettingResponse.Headers, - PendingSettingResponse.Payload - ); - } - - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + RedfishHttpFreeResponse (&PendingSettingResponse); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -278,7 +251,7 @@ RedfishResourceUpdate ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -293,22 +266,19 @@ RedfishResourceUpdate ( =20 Status =3D RedfishUpdateResourceCommon (Private, Private->Json); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a, failed to update resource from: %s: %r\n", _= _func__, Uri, Status)); + DEBUG ((DEBUG_ERROR, "%a: failed to update resource to: %s: %r\n", __f= unc__, Uri, Status)); + } else { + // + // Get latest ETag on URI and keep it in variable. + // + SetEtagFromUri (Private->RedfishService, Private->Uri, TRUE); } =20 // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - RedfishHttpResetResource (Uri); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -351,7 +321,7 @@ RedfishResourceCheck ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -377,15 +347,8 @@ RedfishResourceCheck ( // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -428,7 +391,7 @@ RedfishResourceIdentify ( } =20 ZeroMem (&Response, sizeof (Response)); - Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, &Respon= se, TRUE); + Status =3D RedfishHttpGetResource (Private->RedfishService, Uri, NULL, &= Response, TRUE); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a, get resource from: %s failed\n", __func__, U= ri)); return Status; @@ -449,15 +412,8 @@ RedfishResourceIdentify ( // // Release resource // - if (Private->Payload !=3D NULL) { - RedfishFreeResponse ( - Response.StatusCode, - Response.HeaderCount, - Response.Headers, - Response.Payload - ); - Private->Payload =3D NULL; - } + RedfishHttpFreeResponse (&Response); + Private->Payload =3D NULL; =20 if (Private->Json !=3D NULL) { FreePool (Private->Json); @@ -539,11 +495,6 @@ RedfishResourceStop ( Private->RedfishService =3D NULL; } =20 - if (Private->Payload !=3D NULL) { - RedfishCleanupPayload (Private->Payload); - Private->Payload =3D NULL; - } - return EFI_SUCCESS; } =20 --=20 2.34.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116147): https://edk2.groups.io/g/devel/message/116147 Mute This Topic: https://groups.io/mt/104640228/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-