summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiaxin Wu <jiaxin.wu@intel.com>2018-03-01 12:59:57 +0800
committerJiaxin Wu <jiaxin.wu@intel.com>2018-03-02 11:23:39 +0800
commitd6711a2751f433be9fd5a29e257c93dbe989d820 (patch)
tree24b1698e34717807e5a0c597329f755fe75fc0e5
parent8be643d1f0b710b0f2f7e4f30dbded39c36febf3 (diff)
downloadedk2-d6711a2751f433be9fd5a29e257c93dbe989d820.tar.gz
NetworkPkg/HttpBootDxe: Fix the incorrect error message output.
For IPv6 case, if one invalid URL returned from DHCP server, HttpBootDxe driver could not retrieve the URL host address from DNS server. In such a case, the error message should be printed as: Error: Could not retrieve the host address from DNS server. Instead of: Error: Could not discover the boot information for DHCP server. Then, we can still output as following: Error: Could not retrieve NBP file size from HTTP server. Besides, currently implementation in HttpBootLoadFile will always output error message even the HTTP process is correct. This patch is to fix above issue. Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Wu Jiaxin <jiaxin.wu@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> (cherry picked from commit f33d39949b3eb7f7ab3f326c8adf560aabc6fd53)
-rw-r--r--NetworkPkg/HttpBootDxe/HttpBootClient.c1
-rw-r--r--NetworkPkg/HttpBootDxe/HttpBootImpl.c37
2 files changed, 21 insertions, 17 deletions
diff --git a/NetworkPkg/HttpBootDxe/HttpBootClient.c b/NetworkPkg/HttpBootDxe/HttpBootClient.c
index b93e63bb2f..1d1e47008d 100644
--- a/NetworkPkg/HttpBootDxe/HttpBootClient.c
+++ b/NetworkPkg/HttpBootDxe/HttpBootClient.c
@@ -474,6 +474,7 @@ HttpBootDhcp6ExtractUriInfo (
Status = HttpBootDns (Private, HostNameStr, &IpAddr);
FreePool (HostNameStr);
if (EFI_ERROR (Status)) {
+ AsciiPrint ("\n Error: Could not retrieve the host address from DNS server.\n");
goto Error;
}
}
diff --git a/NetworkPkg/HttpBootDxe/HttpBootImpl.c b/NetworkPkg/HttpBootDxe/HttpBootImpl.c
index 16c1207bf8..a0fd934ec4 100644
--- a/NetworkPkg/HttpBootDxe/HttpBootImpl.c
+++ b/NetworkPkg/HttpBootDxe/HttpBootImpl.c
@@ -1,7 +1,7 @@
/** @file
The implementation of EFI_LOAD_FILE_PROTOCOL for UEFI HTTP boot.
-Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
@@ -331,7 +331,7 @@ HttpBootLoadFile (
//
Status = HttpBootDiscoverBootInfo (Private);
if (EFI_ERROR (Status)) {
- AsciiPrint ("\n Error: Could not discover the boot information for DHCP server.\n");
+ AsciiPrint ("\n Error: Could not retrieve NBP file size from HTTP server.\n");
goto ON_EXIT;
}
}
@@ -400,22 +400,25 @@ HttpBootLoadFile (
ON_EXIT:
HttpBootUninstallCallback (Private);
-
- if (Status == EFI_ACCESS_DENIED) {
- AsciiPrint ("\n Error: Could not establish connection with HTTP server.\n");
- } else if (Status == EFI_BUFFER_TOO_SMALL && Buffer != NULL) {
- AsciiPrint ("\n Error: Buffer size is smaller than the requested file.\n");
- } else if (Status == EFI_OUT_OF_RESOURCES) {
- AsciiPrint ("\n Error: Could not allocate I/O buffers.\n");
- } else if (Status == EFI_DEVICE_ERROR) {
- AsciiPrint ("\n Error: Network device error.\n");
- } else if (Status == EFI_TIMEOUT) {
- AsciiPrint ("\n Error: Server response timeout.\n");
- } else if (Status == EFI_ABORTED) {
- AsciiPrint ("\n Error: Remote boot cancelled.\n");
- } else if (Status != EFI_BUFFER_TOO_SMALL) {
- AsciiPrint ("\n Error: Unexpected network error.\n");
+
+ if (EFI_ERROR (Status)) {
+ if (Status == EFI_ACCESS_DENIED) {
+ AsciiPrint ("\n Error: Could not establish connection with HTTP server.\n");
+ } else if (Status == EFI_BUFFER_TOO_SMALL && Buffer != NULL) {
+ AsciiPrint ("\n Error: Buffer size is smaller than the requested file.\n");
+ } else if (Status == EFI_OUT_OF_RESOURCES) {
+ AsciiPrint ("\n Error: Could not allocate I/O buffers.\n");
+ } else if (Status == EFI_DEVICE_ERROR) {
+ AsciiPrint ("\n Error: Network device error.\n");
+ } else if (Status == EFI_TIMEOUT) {
+ AsciiPrint ("\n Error: Server response timeout.\n");
+ } else if (Status == EFI_ABORTED) {
+ AsciiPrint ("\n Error: Remote boot cancelled.\n");
+ } else if (Status != EFI_BUFFER_TOO_SMALL) {
+ AsciiPrint ("\n Error: Unexpected network error.\n");
+ }
}
+
return Status;
}