[AMD Official Use Only - General] Reviewed-by: Abner Chang <abner.ch...@amd.com>
> -----Original Message----- > From: Nickle Wang <nick...@nvidia.com> > Sent: Monday, September 18, 2023 9:13 PM > To: devel@edk2.groups.io > Cc: Chang, Abner <abner.ch...@amd.com>; Igor Kulchytskyy > <ig...@ami.com>; Nick Ramirez <nrami...@nvidia.com>; Mike Maslenkin > <mike.maslen...@gmail.com> > Subject: [PATCH v2] RedfishPkg/RedfishRestExDxe: return HTTP status code to > caller. > > Caution: This message originated from an External Source. Use proper caution > when opening attachments, clicking links, or responding. > > > Return unsupported HTTP status code to caller so caller can handle > HTTP error status code. Current implementation only return EFI error > to caller. Without knowing the HTTP status code, caller has trouble > to handle HTTP request failure. > > Signed-off-by: Nickle Wang <nick...@nvidia.com> > Cc: Abner Chang <abner.ch...@amd.com> > Cc: Igor Kulchytskyy <ig...@ami.com> > Cc: Nick Ramirez <nrami...@nvidia.com> > Cc: Mike Maslenkin <mike.maslen...@gmail.com> > --- > MdePkg/Include/Protocol/RestEx.h | 3 ++- > .../RedfishRestExDxe/RedfishRestExProtocol.c | 27 ++++++++++--------- > 2 files changed, 16 insertions(+), 14 deletions(-) > > diff --git a/MdePkg/Include/Protocol/RestEx.h > b/MdePkg/Include/Protocol/RestEx.h > index e9bc7be94f2c..da9f1c3f87ef 100644 > --- a/MdePkg/Include/Protocol/RestEx.h > +++ b/MdePkg/Include/Protocol/RestEx.h > @@ -131,7 +131,8 @@ typedef struct { > response when the data is retrieved from the service. RequestMessage > contains the HTTP > request to the REST resource identified by RequestMessage.Request.Url. The > ResponseMessage is the returned HTTP response for that request, including > any HTTP > - status. > + status. It's caller's responsibility to free this ResponseMessage using > FreePool(). > + RestConfigFreeHttpMessage() in RedfishLib is an example to release > ResponseMessage structure. > > @param[in] This Pointer to EFI_REST_EX_PROTOCOL instance > for a > particular > REST service. > diff --git a/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c > b/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c > index 90973619f2bc..5bcdade4b18c 100644 > --- a/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c > +++ b/RedfishPkg/RedfishRestExDxe/RedfishRestExProtocol.c > @@ -29,7 +29,8 @@ EFI_REST_EX_PROTOCOL mRedfishRestExProtocol = { > response when the data is retrieved from the service. RequestMessage > contains the HTTP > request to the REST resource identified by RequestMessage.Request.Url. The > ResponseMessage is the returned HTTP response for that request, including > any HTTP > - status. > + status. It's caller's responsibility to free this ResponseMessage using > FreePool(). > + RestConfigFreeHttpMessage() in RedfishLib is an example to release > ResponseMessage structure. > > @param[in] This Pointer to EFI_REST_EX_PROTOCOL instance > for a > particular > REST service. > @@ -320,6 +321,18 @@ ReSendRequest:; > DEBUG ((DEBUG_ERROR, "This HTTP Status is not handled!\n")); > DumpHttpStatusCode (DEBUG_REDFISH_NETWORK, ResponseData- > >Response.StatusCode); > Status = EFI_UNSUPPORTED; > + > + // > + // Deliver status code back to caller so caller can handle it. > + // > + ResponseMessage->Data.Response = AllocateZeroPool (sizeof > (EFI_HTTP_RESPONSE_DATA)); > + if (ResponseMessage->Data.Response == NULL) { > + Status = EFI_OUT_OF_RESOURCES; > + goto ON_EXIT; > + } > + > + ResponseMessage->Data.Response->StatusCode = ResponseData- > >Response.StatusCode; > + > goto ON_EXIT; > } > > @@ -443,18 +456,6 @@ ON_EXIT: > FreePool (ResponseData); > } > > - if (EFI_ERROR (Status)) { > - if (ResponseMessage->Data.Response != NULL) { > - FreePool (ResponseMessage->Data.Response); > - ResponseMessage->Data.Response = NULL; > - } > - > - if (ResponseMessage->Body != NULL) { > - FreePool (ResponseMessage->Body); > - ResponseMessage->Body = NULL; > - } > - } > - > return Status; > } > > -- > 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108798): https://edk2.groups.io/g/devel/message/108798 Mute This Topic: https://groups.io/mt/101432753/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-