]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/HttpBootDxe/HttpBootSupport.c
MdePkg/BaseIoLibIntrinsic: make BaseIoLibIntrinsic safe for ArmVirt/KVM
[mirror_edk2.git] / NetworkPkg / HttpBootDxe / HttpBootSupport.c
index a19fe6cdbfe5c6e3d1dc86bc9c625220801861b4..d508e2c1a979f85df8ace5f4a5c2940bdfb2c921 100644 (file)
@@ -1034,7 +1034,8 @@ HttpIoRecvResponse (
     HttpIo->IsRxDone = FALSE;\r
   }\r
 \r
-  if (!EFI_ERROR (HttpIo->RspToken.Status) && HttpIo->Callback != NULL) {\r
+  if ((HttpIo->Callback != NULL) && \r
+      (HttpIo->RspToken.Status == EFI_SUCCESS || HttpIo->RspToken.Status == EFI_HTTP_ERROR)) {\r
     Status = HttpIo->Callback (\r
                HttpIoResponse,\r
                HttpIo->RspToken.Message,\r
@@ -1319,3 +1320,25 @@ HttpBootRegisterRamDisk (
   return Status;\r
 }\r
 \r
+/**\r
+  Indicate if the HTTP status code indicates a redirection.\r
+  \r
+  @param[in]  StatusCode      HTTP status code from server.\r
+\r
+  @return                     TRUE if it's redirection.\r
+\r
+**/\r
+BOOLEAN\r
+HttpBootIsHttpRedirectStatusCode (\r
+  IN   EFI_HTTP_STATUS_CODE        StatusCode\r
+  )\r
+{\r
+  if (StatusCode == HTTP_STATUS_301_MOVED_PERMANENTLY ||\r
+      StatusCode == HTTP_STATUS_302_FOUND ||\r
+      StatusCode == HTTP_STATUS_307_TEMPORARY_REDIRECT ||\r
+      StatusCode == HTTP_STATUS_308_PERMANENT_REDIRECT) {\r
+    return TRUE;\r
+  }\r
+\r
+  return FALSE;\r
+}\r