AsciiPrint ("\n");\r
\r
switch (StatusCode) {\r
- case HTTP_STATUS_300_MULTIPLE_CHIOCES:\r
+ case HTTP_STATUS_300_MULTIPLE_CHOICES:\r
AsciiPrint ("\n Redirection: 300 Multiple Choices");\r
break; \r
\r
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
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