<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:PMingLiU;
panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"\@PMingLiU";
panose-1:2 1 6 1 0 1 1 1 1 1;}
/* Style Definitions */
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
{mso-style-priority:99;
mso-style-link:"Plain Text Char";
margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ligatures:standardcontextual;}
span.PlainTextChar
{mso-style-name:"Plain Text Char";
mso-style-priority:99;
mso-style-link:"Plain Text";
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 129.75pt 1.0in 129.7pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoPlainText">Hi <a id="OWAAM5F137A7B5442465F97AAAE1284A6195D" href="mailto:abner.chang@amd.com">
<span style="font-family:"Calibri",sans-serif;text-decoration:none">@Abner Chang</span></a><o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I update the function header of RedfishRestExSendReceive() in 2nd version and I assume there is no need to update UEFI specification for this. Please feel free to correct me if I am wrong.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks,<o:p></o:p></p>
<p class="MsoPlainText">Nickle<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">> -----Original Message-----</p>
<p class="MsoPlainText">> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Nickle Wang</p>
<p class="MsoPlainText">> via groups.io</p>
<p class="MsoPlainText">> Sent: Monday, September 18, 2023 9:13 PM</p>
<p class="MsoPlainText">> To: devel@edk2.groups.io</p>
<p class="MsoPlainText">> Cc: Abner Chang <abner.chang@amd.com>; Igor Kulchytskyy <igork@ami.com>;</p>
<p class="MsoPlainText">> Nick Ramirez <nramirez@nvidia.com>; Mike Maslenkin</p>
<p class="MsoPlainText">> <mike.maslenkin@gmail.com></p>
<p class="MsoPlainText">> Subject: [edk2-devel] [PATCH v2] RedfishPkg/RedfishRestExDxe: return HTTP</p>
<p class="MsoPlainText">> status code to caller.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> External email: Use caution opening links or attachments</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Return unsupported HTTP status code to caller so caller can handle HTTP error</p>
<p class="MsoPlainText">> status code. Current implementation only return EFI error to caller. Without</p>
<p class="MsoPlainText">> knowing the HTTP status code, caller has trouble to handle HTTP request failure.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> Signed-off-by: Nickle Wang <<a href="mailto:nicklew@nvidia.com"><span style="color:windowtext;text-decoration:none">nicklew@nvidia.com</span></a>></p>
<p class="MsoPlainText">> Cc: Abner Chang <<a href="mailto:abner.chang@amd.com"><span style="color:windowtext;text-decoration:none">abner.chang@amd.com</span></a>></p>
<p class="MsoPlainText">> Cc: Igor Kulchytskyy <<a href="mailto:igork@ami.com"><span style="color:windowtext;text-decoration:none">igork@ami.com</span></a>></p>
<p class="MsoPlainText">> Cc: Nick Ramirez <<a href="mailto:nramirez@nvidia.com"><span style="color:windowtext;text-decoration:none">nramirez@nvidia.com</span></a>></p>
<p class="MsoPlainText">> Cc: Mike Maslenkin <<a href="mailto:mike.maslenkin@gmail.com"><span style="color:windowtext;text-decoration:none">mike.maslenkin@gmail.com</span></a>></p>
<p class="MsoPlainText">> ---</p>
<p class="MsoPlainText">> MdePkg/Include/Protocol/RestEx.h | 3 ++-</p>
<p class="MsoPlainText">> .../RedfishRestExDxe/RedfishRestExProtocol.c | 27 ++++++++++---------</p>
<p class="MsoPlainText">> 2 files changed, 16 insertions(+), 14 deletions(-)</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> diff --git a/MdePkg/Include/Protocol/RestEx.h</p>
<p class="MsoPlainText">> b/MdePkg/Include/Protocol/RestEx.h</p>
<p class="MsoPlainText">> index e9bc7be94f2c..da9f1c3f87ef 100644</p>
<p class="MsoPlainText">> --- a/MdePkg/Include/Protocol/RestEx.h</p>
<p class="MsoPlainText">> +++ b/MdePkg/Include/Protocol/RestEx.h</p>
<p class="MsoPlainText">> @@ -131,7 +131,8 @@ typedef struct {</p>
<p class="MsoPlainText">> response when the data is retrieved from the service. RequestMessage contains</p>
<p class="MsoPlainText">> the HTTP</p>
<p class="MsoPlainText">> request to the REST resource identified by RequestMessage.Request.Url. The</p>
<p class="MsoPlainText">> ResponseMessage is the returned HTTP response for that request, including any</p>
<p class="MsoPlainText">> HTTP</p>
<p class="MsoPlainText">> - status.</p>
<p class="MsoPlainText">> + status. It's caller's responsibility to free this ResponseMessage using FreePool().</p>
<p class="MsoPlainText">> + RestConfigFreeHttpMessage() in RedfishLib is an example to release</p>
<p class="MsoPlainText">> ResponseMessage structure.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> @param[in] This Pointer to EFI_REST_EX_PROTOCOL instance for a</p>
<p class="MsoPlainText">> particular</p>
<p class="MsoPlainText">> REST service.</p>
<p class="MsoPlainText">> diff --git a/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c</p>
<p class="MsoPlainText">> b/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c</p>
<p class="MsoPlainText">> index 90973619f2bc..5bcdade4b18c 100644</p>
<p class="MsoPlainText">> --- a/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c</p>
<p class="MsoPlainText">> +++ b/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c</p>
<p class="MsoPlainText">> @@ -29,7 +29,8 @@ EFI_REST_EX_PROTOCOL mRedfishRestExProtocol = {</p>
<p class="MsoPlainText">> response when the data is retrieved from the service. RequestMessage contains</p>
<p class="MsoPlainText">> the HTTP</p>
<p class="MsoPlainText">> request to the REST resource identified by RequestMessage.Request.Url. The</p>
<p class="MsoPlainText">> ResponseMessage is the returned HTTP response for that request, including any</p>
<p class="MsoPlainText">> HTTP</p>
<p class="MsoPlainText">> - status.</p>
<p class="MsoPlainText">> + status. It's caller's responsibility to free this ResponseMessage using FreePool().</p>
<p class="MsoPlainText">> + RestConfigFreeHttpMessage() in RedfishLib is an example to release</p>
<p class="MsoPlainText">> ResponseMessage structure.</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> @param[in] This Pointer to EFI_REST_EX_PROTOCOL instance for a</p>
<p class="MsoPlainText">> particular</p>
<p class="MsoPlainText">> REST service.</p>
<p class="MsoPlainText">> @@ -320,6 +321,18 @@ ReSendRequest:;</p>
<p class="MsoPlainText">> DEBUG ((DEBUG_ERROR, "This HTTP Status is not handled!\n"));</p>
<p class="MsoPlainText">> DumpHttpStatusCode (DEBUG_REDFISH_NETWORK, ResponseData-</p>
<p class="MsoPlainText">> >Response.StatusCode);</p>
<p class="MsoPlainText">> Status = EFI_UNSUPPORTED;</p>
<p class="MsoPlainText">> +</p>
<p class="MsoPlainText">> + //</p>
<p class="MsoPlainText">> + // Deliver status code back to caller so caller can handle it.</p>
<p class="MsoPlainText">> + //</p>
<p class="MsoPlainText">> + ResponseMessage->Data.Response = AllocateZeroPool (sizeof</p>
<p class="MsoPlainText">> (EFI_HTTP_RESPONSE_DATA));</p>
<p class="MsoPlainText">> + if (ResponseMessage->Data.Response == NULL) {</p>
<p class="MsoPlainText">> + Status = EFI_OUT_OF_RESOURCES;</p>
<p class="MsoPlainText">> + goto ON_EXIT;</p>
<p class="MsoPlainText">> + }</p>
<p class="MsoPlainText">> +</p>
<p class="MsoPlainText">> + ResponseMessage->Data.Response->StatusCode =</p>
<p class="MsoPlainText">> + ResponseData->Response.StatusCode;</p>
<p class="MsoPlainText">> +</p>
<p class="MsoPlainText">> goto ON_EXIT;</p>
<p class="MsoPlainText">> }</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> @@ -443,18 +456,6 @@ ON_EXIT:</p>
<p class="MsoPlainText">> FreePool (ResponseData);</p>
<p class="MsoPlainText">> }</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> - if (EFI_ERROR (Status)) {</p>
<p class="MsoPlainText">> - if (ResponseMessage->Data.Response != NULL) {</p>
<p class="MsoPlainText">> - FreePool (ResponseMessage->Data.Response);</p>
<p class="MsoPlainText">> - ResponseMessage->Data.Response = NULL;</p>
<p class="MsoPlainText">> - }</p>
<p class="MsoPlainText">> -</p>
<p class="MsoPlainText">> - if (ResponseMessage->Body != NULL) {</p>
<p class="MsoPlainText">> - FreePool (ResponseMessage->Body);</p>
<p class="MsoPlainText">> - ResponseMessage->Body = NULL;</p>
<p class="MsoPlainText">> - }</p>
<p class="MsoPlainText">> - }</p>
<p class="MsoPlainText">> -</p>
<p class="MsoPlainText">> return Status;</p>
<p class="MsoPlainText">> }</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> --</p>
<p class="MsoPlainText">> 2.17.1</p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText">> </p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
</body>
</html>
<div width="1" style="color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>
You receive all messages sent to this group.
<p>
<a target="_blank" href="https://edk2.groups.io/g/devel/message/108780">View/Reply Online (#108780)</a> |
|
<a target="_blank" href="https://groups.io/mt/101432753/1813853">Mute This Topic</a>
| <a href="https://edk2.groups.io/g/devel/post">New Topic</a>
<br>
<a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> |
<a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |
<a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>
[edk2-devel-archive@redhat.com]<br>
<div width="1" style="color:white;clear:both">_._,_._,_</div>