RedfishPkg/RedfishRestExDxe: Two PCDs for controlling the requests

Since BIOS should work with different BMC implementation chunked requests
as well as Expect header should be optional.
 - One PCD is used to enable/disable Expect header.
 - Another PCD is used to enable/disable chunked requests.

Reviewed-by: Abner Chang <abner.chang@amd.com>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Nickle Wang <nicklew@nvidia.com>
Signed-off-by: Igor Kulchytskyy <igork@ami.com>
This commit is contained in:
Abner Chang
2023-02-10 02:05:12 +08:00
committed by mergify[bot]
parent 289d93b79c
commit 39254d922e
4 changed files with 116 additions and 62 deletions

View File

@@ -3,6 +3,7 @@
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
Copyright (c) 2023, American Megatrends International LLC.
SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -140,9 +141,6 @@ RedfishHttpAddExpectation (
}
*ItsWrite = FALSE;
if (PreservedRequestHeaders != NULL) {
*PreservedRequestHeaders = RequestMessage->Headers;
}
if ((RequestMessage->Data.Request->Method != HttpMethodPut) && (RequestMessage->Data.Request->Method != HttpMethodPost) &&
(RequestMessage->Data.Request->Method != HttpMethodPatch))
@@ -152,10 +150,20 @@ RedfishHttpAddExpectation (
*ItsWrite = TRUE;
NewHeaders = AllocateZeroPool ((RequestMessage->HeaderCount + 1) * sizeof (EFI_HTTP_HEADER));
CopyMem ((VOID *)NewHeaders, (VOID *)RequestMessage->Headers, RequestMessage->HeaderCount * sizeof (EFI_HTTP_HEADER));
HttpSetFieldNameAndValue (NewHeaders + RequestMessage->HeaderCount, HTTP_HEADER_EXPECT, HTTP_EXPECT_100_CONTINUE);
RequestMessage->HeaderCount++;
RequestMessage->Headers = NewHeaders;
//
// Check PCD before adding Expect header
//
if (FixedPcdGetBool (PcdRedfishRestExAddingExpect)) {
if (PreservedRequestHeaders != NULL) {
*PreservedRequestHeaders = RequestMessage->Headers;
}
NewHeaders = AllocateZeroPool ((RequestMessage->HeaderCount + 1) * sizeof (EFI_HTTP_HEADER));
CopyMem ((VOID *)NewHeaders, (VOID *)RequestMessage->Headers, RequestMessage->HeaderCount * sizeof (EFI_HTTP_HEADER));
HttpSetFieldNameAndValue (NewHeaders + RequestMessage->HeaderCount, HTTP_HEADER_EXPECT, HTTP_EXPECT_100_CONTINUE);
RequestMessage->HeaderCount++;
RequestMessage->Headers = NewHeaders;
}
return EFI_SUCCESS;
}