From nobody Sun May 19 13:07:51 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+99779+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+99779+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1675823780405637.7173556531402; Tue, 7 Feb 2023 18:36:20 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id neeOYY1788612xtTfRoQJqG0; Tue, 07 Feb 2023 18:36:20 -0800 X-Received: from NAM10-MW2-obe.outbound.protection.outlook.com (NAM10-MW2-obe.outbound.protection.outlook.com [40.107.94.76]) by mx.groups.io with SMTP id smtpd.web10.10377.1675823778364555223 for ; Tue, 07 Feb 2023 18:36:19 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bqQIx1JrCgch2joVlFGBW+ReyDTSyUxCgqRKEVnH3l2S5vWH4tsngY1FL7RV9bTkkF0YgqtXnQfDOOt2N+E+2hA8sCGoyS2p25Jc9BvPd463GlD5NkRK/RQP9awDiE8norkDNmRYjTx35GPD1ugff93QRC03ns98A1TetAWc0+lvJwm9xeQV8I1hXOwgsEvtg1KabK6HNQNymmjx5B4OB+pXmrXJ4P8ZsKqU/6EPU2MB9ohVfhj+Mj702IGZcQ016fkBUgZO2S+EYiXNm8tbcE2gEOSVNKqLA+ubKDrR8Me3ehgcC8KKDFXWfvtNMn1lq8eHFNFHfaErB9sIVUGOcw== 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=CLr7AYT2Zy+uHMsmWl/6HKwYYnAVtOWEhlW5oqqhlto=; b=d7wCJs+xTKlmeKfVkfCh3H4EfjUgYVJU83gCshZUXcwDsdUZMhRNL4DE5Q6n1gKoEK5gyossIjKzp2TnvAesau7KlFR3zDN3bhEmHgOLJlKrmXIyw+uHqp95x5ShF5nNsnzby1dwSd9+UF+VI7s2tHCoL3r4nEVfNCTjxY4QGpJBotBtM55R8ExfVqHlVaMiIBL41z3xWR+U/Ajue0/UBpfShQ56b08aCF6HL8wfffo0xxxXqUwzvQYpkry/aUHFR6OAzxlagkWyK5yv6vNEPH0jf/uYA5OpwRO8oH/32GmtKtav9CmHmyQZ1jo0gMNRIA5tQbHq5zxlxOxosHDrjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ami.com; dmarc=pass action=none header.from=ami.com; dkim=pass header.d=ami.com; arc=none X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com (2603:10b6:208:328::16) by MN0PR10MB6006.namprd10.prod.outlook.com (2603:10b6:208:3ca::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.15; Wed, 8 Feb 2023 02:36:12 +0000 X-Received: from BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::3318:8f42:7036:dbbf]) by BLAPR10MB5185.namprd10.prod.outlook.com ([fe80::3318:8f42:7036:dbbf%6]) with mapi id 15.20.6086.016; Wed, 8 Feb 2023 02:36:11 +0000 From: "Igor Kulchytskyy via groups.io" To: "devel@edk2.groups.io" CC: Igor Kulchytskyy , Abner Chang , Nickle Wang Subject: [edk2-devel] [PATCH V2] RedfishPkg: RedfishRestExDxe: PCD introduced to control "Expect" header Thread-Topic: [PATCH V2] RedfishPkg: RedfishRestExDxe: PCD introduced to control "Expect" header Thread-Index: AQHZO2YbjOoJFS1qak2lWwRYSny/Tg== Date: Wed, 8 Feb 2023 02:36:11 +0000 Message-ID: <1675823758-18884-1-git-send-email-igork@ami.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BLAPR10MB5185:EE_|MN0PR10MB6006:EE_ x-ms-office365-filtering-correlation-id: ab27cf10-f296-49eb-7bfa-08db097d3de8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: /8sJmgprawxcqVzn4e9MmOqWTGfvo0lrkbsjW8ykCZNKr6aCQhrs61R2EmKIfshw3tPS358E9nVpa+lfresmXNJFhbT2+vXrbK6qdbGjnezBpLDxioZoRgPWLTOlGc9xIFIUHpeV1TqCqErs94pCIjDHl92BDkIdvL+IfNfLtPGUGn1jUgl6HBQdIFvFMOF9wEm5clLRb+KuAWI1c73zwRGaLGNQyYOky/TbnMU3Xa3i5lGxmvY+i8dF7klYYBfgkzNuw/b/KDAaeno8nDlK4S+/XgwYJ7TQWlqKNeWE7YPb+GqIGRi2fD4qQAeDMCcgTa+6cEPhg4RJixH6SzL/PUrX7QIo94mCAO28Kx8HCMyPOLARxW17Uk30KLjzbFkiJpdudGr47cHP1uDOBLdKU82dExreZu7rK1K8hZFKeYtWWG/YhfsWvc+ba3Gogh0EuNsMcgJfNrY97DjA2inkzsBACmT3zPWjQ34SgCN1YEDdIwUlIFWt1wtPBsgpO3zgluCvKmXiyvXdNUsQdfLGv0TgQEQRr7VDSPsmHXqDZUJ+cc6JkpNtz3Xwa/6IZANG5LGT18rCu5+XseRZGvVIRhz8AInLs7M9Z6kIWo3zy7TR0Mgjz+ghWRaC9KeD0eBJzUJucYgMg5i3CZv/hc5HC+1JmIWjHuD8SWNg9+v+w1+GtF1C5F9YOo1fpj29bcOUBfCeIeovC0naRrMMrcdS/g== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?ewI+xLiuUKvb/ftx86WgyqORE5o7fAGCf8ZZ2gUcZoZhCDztROUlOXAQeL?= =?iso-8859-1?Q?5QnB/UIlz90fDlPDT66XpprBp5r++7kwEWcQlYMcSVIJEm+2UXiKm1REPK?= =?iso-8859-1?Q?/W3mocUiPOuxNE0lwAJ3lVm7rbvYj1Ny+OTUG1Xg29hHNPfcEAaMqFAwAU?= =?iso-8859-1?Q?z38XlPrEJsUWJuuFdI5lyj+S0DbxF5uJyydwIQ+m2mhUww7U9kQbKwXK4E?= =?iso-8859-1?Q?ugtt4fYPO/zWMekKE954k22Rnlt6CTmS5szl/3qA7hBUryskHDcfPA/K/h?= =?iso-8859-1?Q?8qPtR/9mr0+83C3bbGo/WUvN3Usg+xSI4TTWtPFeomnITJeIWXvekI6/rk?= =?iso-8859-1?Q?hvYwejGHB/a7i0TIHZTZ+WWi0quG6GRZ/4IzyVmG32/tiV8vGsNB2/GulC?= =?iso-8859-1?Q?t687D/FoRlEgeyhdiJRTcplSJ1jWg/Kex/C1DX2GoEsHKjoppQAIg/8Ag5?= =?iso-8859-1?Q?G7kjS3GEIf06q+9qXyk4t3KNtwxU9tVvYGO6mw0YRG3wQGuGN0bbd7hoRf?= =?iso-8859-1?Q?N/y9jODuowm6S0EoyzpQWauERZAE+zgzzwGwcoramUvDWlq+XKkbupKvXq?= =?iso-8859-1?Q?PP3mtGhjZQeRkyfss2RBbqJ2fPTbxN+YEhGYPSMPRLSG4aUQdDWRV9y45k?= =?iso-8859-1?Q?F+Hv7igOiEWiK/bqLOuBMqKuRtQKzlZdBehevkbU0jAKt3sznSkUsY/3FO?= =?iso-8859-1?Q?H+xIu75F4BsqpE5iB4OBxyQAHdNmOm4p/JL8DdbEqqq+v+96U4xfBk9Hbl?= =?iso-8859-1?Q?gaK1tGHhmsUOuo491PY+TCIJvppYKnrowx+olW0Zhala79KoNLE55EAtrx?= =?iso-8859-1?Q?ePfVVXLOw2iLNBWVDfBVQgtG4gLmwGEEVlM+XZNhjkuzmVCmSS86qi5B/Q?= =?iso-8859-1?Q?puMHKoXhsEVAg42lxkVekdyfSXvejrEip3U8wB+2YCB3bHhLpGIofUjdQN?= =?iso-8859-1?Q?Nq2bhtcMb5J99i+LTWYKLfD70K3a3qpLzgjLUGb4EdYAlrMy3BWMrJlROY?= =?iso-8859-1?Q?UW/54PQF9XLDifLSLwIaGaTBpoeu0UIM3uM05bX258dWsUiCi1HS8gCRqK?= =?iso-8859-1?Q?ZRd0+yEh1hDYIJGZmCGkeDMRDf94JV6nfIOHn3urhYhtedxZv23qZNlsO3?= =?iso-8859-1?Q?zXoNfic9FjBBB5CVI5kICyPH+EbUkPgWQDxi0WY7Spb5ze999CApdTgRw2?= =?iso-8859-1?Q?apv3U9De+KBze2ivJs9zeoYT+O4qcJ6V+Ax4FM4mIf34kYsBRg8cIeQXyC?= =?iso-8859-1?Q?AryJNN30nAsuHHnFlspt/f14mqhfAs6fA4LtPG4CG5EMdr1a5kTcphkJxo?= =?iso-8859-1?Q?StJ1F5/5DXNHoo6z90ZhABAh2qtJ8wBUTecGSQgGWJxzUsGwzdBG0z1ZtU?= =?iso-8859-1?Q?l4bbPgaQBmHpt0lgaZvUAw+QPLt8bnsSSfytXYq0QVDUeWNFpi8s0FY+wv?= =?iso-8859-1?Q?0fb49FtiM+6vNYVAuC0dHgaG5QbdXZ/6nCmrCcuGUnsH3xBmR1qVtNaX04?= =?iso-8859-1?Q?UE9wJK109iRMWd12iDzitPI2TsqGdpPk18skZfv8AlAlxlY6hPagE63zYI?= =?iso-8859-1?Q?lpwqnZSXnIl3qKJjU3toM7JDkfgyY5uKMmdxcd7kZb2kLzqxLccd7BXZ4q?= =?iso-8859-1?Q?FBPNfherJPaY0RIUCrA6dMzl7rwdiGdiHd?= MIME-Version: 1.0 X-OriginatorOrg: ami.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5185.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab27cf10-f296-49eb-7bfa-08db097d3de8 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Feb 2023 02:36:11.6640 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 27e97857-e15f-486c-b58e-86c2b3040f93 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CB3w3Tgu4vDS1B6eiocMVDMSF2JweC5Kr7gq1KeaBN6jfIN+ZSiWOvV4q+yFbHDj X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR10MB6006 Precedence: Bulk List-Unsubscribe: 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,igork@ami.com X-Gm-Message-State: bwLSDkT9N7FlQ3trKXXdwi91x1787277AA= Content-Language: en-US Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1675823780; bh=F/NiiZeNN07OSPs8Jhf+bXSSHzrB4r5eGDoSg9rVwJw=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=d5tR0IIRAfBwU4rMs689h1GhkAq0cvcm4B/JYq7VOKl0dFW3+57V1FyBNCkD4vco8We J9KZgqnzqYv31mm3oQeoQyatf4LYMhDdRYJMJMSgvApTqJNwBs+Ps1nrrPltS9/9GFdRy dDtMUfuH5VcvmL/fEsFdabL6IFONxzA7Z8k= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1675823782273100002 Content-Type: text/plain; charset="utf-8" "Expect" header for POST, PATCH, PUT requests should be optional in order to work with different BMC implementation Cc: Abner Chang Cc: Nickle Wang Signed-off-by: Igor Kulchytskyy --- RedfishPkg/RedfishPkg.dec | 6 +- RedfishPkg/RedfishRestExDxe/RedfishRestExDxe.inf | 1 + RedfishPkg/RedfishRestExDxe/RedfishRestExImpl.c | 23 ++-- RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c | 136 +++++++++++-----= ---- 4 files changed, 95 insertions(+), 71 deletions(-) diff --git a/RedfishPkg/RedfishPkg.dec b/RedfishPkg/RedfishPkg.dec index 4b4706b..bf48fdd 100644 --- a/RedfishPkg/RedfishPkg.dec +++ b/RedfishPkg/RedfishPkg.dec @@ -102,4 +102,8 @@ # Default is set to non chunk mode. # gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExChunkRequestMode|FALSE|BOOL= EAN|0x00001003 - \ No newline at end of file + # + # This PCD indicates if the EFI REST EX adds Expect header to the POST, = PATCH, PUT requests to Redfish service. + # Default is set to not add. + # + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExAddingExpect|FALSE|BOOLEAN|= 0x00001004 diff --git a/RedfishPkg/RedfishRestExDxe/RedfishRestExDxe.inf b/RedfishPkg/= RedfishRestExDxe/RedfishRestExDxe.inf index 26ce167..29003ae 100644 --- a/RedfishPkg/RedfishRestExDxe/RedfishRestExDxe.inf +++ b/RedfishPkg/RedfishRestExDxe/RedfishRestExDxe.inf @@ -58,6 +58,7 @@ [Pcd] gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExServiceAccessModeInBand #= # CONSUMES gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExChunkRequestMode ## CONSU= MES + gEfiRedfishPkgTokenSpaceGuid.PcdRedfishRestExAddingExpect ## CONSUMES [UserExtensions.TianoCore."ExtraFiles"] RedfishRestExDxeExtra.uni diff --git a/RedfishPkg/RedfishRestExDxe/RedfishRestExImpl.c b/RedfishPkg/R= edfishRestExDxe/RedfishRestExImpl.c index 952e9d1..0da0d10 100644 --- a/RedfishPkg/RedfishRestExDxe/RedfishRestExImpl.c +++ b/RedfishPkg/RedfishRestExDxe/RedfishRestExImpl.c @@ -140,9 +140,6 @@ RedfishHttpAddExpectation ( } *ItsWrite =3D FALSE; - if (PreservedRequestHeaders !=3D NULL) { - *PreservedRequestHeaders =3D RequestMessage->Headers; - } if ((RequestMessage->Data.Request->Method !=3D HttpMethodPut) && (Reques= tMessage->Data.Request->Method !=3D HttpMethodPost) && (RequestMessage->Data.Request->Method !=3D HttpMethodPatch)) @@ -152,10 +149,20 @@ RedfishHttpAddExpectation ( *ItsWrite =3D TRUE; - NewHeaders =3D AllocateZeroPool ((RequestMessage->HeaderCount + 1) * siz= eof (EFI_HTTP_HEADER)); - CopyMem ((VOID *)NewHeaders, (VOID *)RequestMessage->Headers, RequestMes= sage->HeaderCount * sizeof (EFI_HTTP_HEADER)); - HttpSetFieldNameAndValue (NewHeaders + RequestMessage->HeaderCount, HTTP= _HEADER_EXPECT, HTTP_EXPECT_100_CONTINUE); - RequestMessage->HeaderCount++; - RequestMessage->Headers =3D NewHeaders; + // + // Check PCD before adding Expect header + // + if(FixedPcdGetBool(PcdRedfishRestExAddingExpect)) { + if (PreservedRequestHeaders !=3D NULL) { + *PreservedRequestHeaders =3D RequestMessage->Headers; + } + + NewHeaders =3D AllocateZeroPool ((RequestMessage->HeaderCount + 1) * s= izeof (EFI_HTTP_HEADER)); + CopyMem ((VOID *)NewHeaders, (VOID *)RequestMessage->Headers, RequestM= essage->HeaderCount * sizeof (EFI_HTTP_HEADER)); + HttpSetFieldNameAndValue (NewHeaders + RequestMessage->HeaderCount, HT= TP_HEADER_EXPECT, HTTP_EXPECT_100_CONTINUE); + RequestMessage->HeaderCount++; + RequestMessage->Headers =3D NewHeaders; + } + return EFI_SUCCESS; } diff --git a/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c b/RedfishP= kg/RedfishRestExDxe/RedfishRestExProtocol.c index 22dc5e1..fbd5e46 100644 --- a/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c +++ b/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c @@ -97,84 +97,70 @@ RedfishRestExSendReceive ( DEBUG ((DEBUG_INFO, "*** Perform HTTP Request Method - %d, URL: %s\n", R= equestMessage->Data.Request->Method, RequestMessage->Data.Request->Url)); if(FixedPcdGetBool(PcdRedfishRestExChunkRequestMode)){ - // - // Add header "Expect" to server, only for URL write. - // - Status =3D RedfishHttpAddExpectation (This, RequestMessage, &Preserv= edRequestHeaders, &ItsWrite); - if (EFI_ERROR (Status)) { - return Status; - } - - if (ItsWrite =3D=3D TRUE) { - if (RequestMessage->BodyLength > HTTP_IO_MAX_SEND_PAYLOAD) { - // - // Send chunked transfer. - // - SendChunkProcess++; - CopyMem ((VOID *)&ChunkTransferRequestMessage, (VOID *)RequestMe= ssage, sizeof (EFI_HTTP_MESSAGE)); - } else { - SendNonChunkProcess++; - } + // + // Add header "Expect" to server, only for URL write. + // + Status =3D RedfishHttpAddExpectation (This, RequestMessage, &Preserved= RequestHeaders, &ItsWrite); + if (EFI_ERROR (Status)) { + return Status; + } + + if (ItsWrite =3D=3D TRUE) { + if (RequestMessage->BodyLength > HTTP_IO_MAX_SEND_PAYLOAD) { + // + // Send chunked transfer. + // + SendChunkProcess++; + CopyMem ((VOID *)&ChunkTransferRequestMessage, (VOID *)RequestMess= age, sizeof (EFI_HTTP_MESSAGE)); + } else { + SendNonChunkProcess++; } + } } - + ReSendRequest:; if(FixedPcdGetBool(PcdRedfishRestExChunkRequestMode)){ + // + // Send the chunked request to REST service. + // + if (ItsWrite =3D=3D TRUE) { // - // Send the chunked request to REST service. + // This is write to URI // - if (ItsWrite =3D=3D TRUE) { + if (SendChunkProcess > HttpIoSendChunkNone) { // - // This is write to URI + // This is chunk transfer for writing large payload. + // Send request header first and then handle the + // following request message body using chunk transfer. // - if (SendChunkProcess > HttpIoSendChunkNone) { - // - // This is chunk transfer for writing large payload. - // Send request header first and then handle the - // following request message body using chunk transfer. - // - do { - Status =3D HttpIoSendChunkedTransfer ( - &(Instance->HttpIo), - &SendChunkProcess, - &ChunkTransferRequestMessage - ); - if (EFI_ERROR (Status)) { - goto ON_EXIT; - } - } while (SendChunkProcess =3D=3D HttpIoSendChunkContent || SendC= hunkProcess =3D=3D HttpIoSendChunkEndChunk); - } else { - // - // This is the non-chunk transfer, send request header first and= then - // handle the following request message body using chunk transfe= r. - // - Status =3D HttpIoSendRequest ( + do { + Status =3D HttpIoSendChunkedTransfer ( &(Instance->HttpIo), - (SendNonChunkProcess =3D=3D HttpIoSendNonChunkContent= ) ? NULL : RequestMessage->Data.Request, - (SendNonChunkProcess =3D=3D HttpIoSendNonChunkContent= ) ? 0 : RequestMessage->HeaderCount, - (SendNonChunkProcess =3D=3D HttpIoSendNonChunkContent= ) ? NULL : RequestMessage->Headers, - (SendNonChunkProcess =3D=3D HttpIoSendNonChunkHeaderZ= eroContent) ? 0 : RequestMessage->BodyLength, - (SendNonChunkProcess =3D=3D HttpIoSendNonChunkHeaderZ= eroContent) ? NULL : RequestMessage->Body + &SendChunkProcess, + &ChunkTransferRequestMessage ); - } + if (EFI_ERROR (Status)) { + goto ON_EXIT; + } + } while (SendChunkProcess =3D=3D HttpIoSendChunkContent || SendChu= nkProcess =3D=3D HttpIoSendChunkEndChunk); } else { // - // This is read from URI. + // This is the non-chunk transfer, send request header first and t= hen + // handle the following request message body using chunk transfer. // Status =3D HttpIoSendRequest ( &(Instance->HttpIo), - RequestMessage->Data.Request, - RequestMessage->HeaderCount, - RequestMessage->Headers, - RequestMessage->BodyLength, - RequestMessage->Body + (SendNonChunkProcess =3D=3D HttpIoSendNonChunkContent) = ? NULL : RequestMessage->Data.Request, + (SendNonChunkProcess =3D=3D HttpIoSendNonChunkContent) = ? 0 : RequestMessage->HeaderCount, + (SendNonChunkProcess =3D=3D HttpIoSendNonChunkContent) = ? NULL : RequestMessage->Headers, + (SendNonChunkProcess =3D=3D HttpIoSendNonChunkHeaderZer= oContent) ? 0 : RequestMessage->BodyLength, + (SendNonChunkProcess =3D=3D HttpIoSendNonChunkHeaderZer= oContent) ? NULL : RequestMessage->Body ); } - } - else{ + } else { // - // This is normal request to URI. + // This is read from URI. // Status =3D HttpIoSendRequest ( &(Instance->HttpIo), @@ -184,8 +170,22 @@ ReSendRequest:; RequestMessage->BodyLength, RequestMessage->Body ); + } } - + else{ + // + // This is normal request to URI. + // + Status =3D HttpIoSendRequest ( + &(Instance->HttpIo), + RequestMessage->Data.Request, + RequestMessage->HeaderCount, + RequestMessage->Headers, + RequestMessage->BodyLength, + RequestMessage->Body + ); + } + if (EFI_ERROR (Status)) { goto ON_EXIT; } @@ -233,7 +233,7 @@ ReSendRequest:; // // Restore the headers if it ever changed in RedfishHttpAddExpectation(). // - if (FixedPcdGetBool(PcdRedfishRestExChunkRequestMode) && RequestMessage-= >Headers !=3D PreservedRequestHeaders) { + if (FixedPcdGetBool(PcdRedfishRestExAddingExpect) && RequestMessage->Hea= ders !=3D PreservedRequestHeaders) { FreePool (RequestMessage->Headers); RequestMessage->Headers =3D PreservedRequestHeaders; // Restore header= s before we adding "Expect". RequestMessage->HeaderCount--; // Minus one header= count for "Expect". @@ -248,6 +248,18 @@ ReSendRequest:; SendChunkProcess++; goto ReSendRequest; } + } else if (ResponseData->Response.StatusCode =3D=3D HTTP_STATUS_204_NO_C= ONTENT) { + DEBUG ((DEBUG_INFO, "HTTP_STATUS_204_NO_CONTENT\n")); + + if (FixedPcdGetBool(PcdRedfishRestExChunkRequestMode) && SendChunkProc= ess =3D=3D HttpIoSendChunkHeaderZeroContent) { + DEBUG ((DEBUG_INFO, "This is chunk transfer, start to send all chunk= s.", ResponseData->Response.StatusCode)); + SendChunkProcess ++; + goto ReSendRequest; + } + } else if (ResponseData->Response.StatusCode =3D=3D HTTP_STATUS_201_CREA= TED) { + DEBUG ((DEBUG_INFO, "HTTP_STATUS_201_CREATED\n")); + } else if (ResponseData->Response.StatusCode =3D=3D HTTP_STATUS_202_ACCE= PTED) { + DEBUG ((DEBUG_INFO, "HTTP_STATUS_202_ACCEPTED\n")); } else if (ResponseData->Response.StatusCode =3D=3D HTTP_STATUS_413_REQU= EST_ENTITY_TOO_LARGE) { DEBUG ((DEBUG_INFO, "HTTP_STATUS_413_REQUEST_ENTITY_TOO_LARGE\n")); @@ -414,7 +426,7 @@ ReSendRequest:; TotalReceivedSize +=3D ResponseData->BodyLength; } - DEBUG ((DEBUG_INFO, "Total of lengh of Response :%d\n", TotalReceivedS= ize)); + DEBUG ((DEBUG_INFO, "Total of length of Response :%d\n", TotalReceived= Size)); } DEBUG ((DEBUG_INFO, "RedfishRestExSendReceive()- EFI_STATUS: %r\n", Stat= us)); -- 2.6.1.windows.1 -The information contained in this message may be confidential and propriet= ary to American Megatrends (AMI). This communication is intended to be read= only by the individual or entity to whom it is addressed or by their desig= nee. If the reader of this message is not the intended recipient, you are o= n notice that any distribution of this message, in any form, is strictly pr= ohibited. Please promptly notify the sender by reply e-mail or by telephone= at 770-246-8600, and then delete or destroy all copies of the transmission. -=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 (#99779): https://edk2.groups.io/g/devel/message/99779 Mute This Topic: https://groups.io/mt/96822705/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-