Reviewed-by: Fu Siyuan <[email protected]>
> -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Jiaxin Wu > Sent: Thursday, March 1, 2018 2:30 PM > To: [email protected] > Cc: Ye, Ting <[email protected]>; Fu, Siyuan <[email protected]>; Wu, > Jiaxin <[email protected]> > Subject: [edk2] [Patch] 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 <[email protected]> > Cc: Fu Siyuan <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Wu Jiaxin <[email protected]> > --- > NetworkPkg/HttpBootDxe/HttpBootClient.c | 1 + > NetworkPkg/HttpBootDxe/HttpBootImpl.c | 37 ++++++++++++++++++---------- > ----- > 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 > @@ -472,10 +472,11 @@ 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; > } > } > > CopyMem (&Private->ServerIp.v6, &IpAddr, sizeof (EFI_IPv6_ADDRESS)); > 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,9 +1,9 @@ > /** @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. > The full text of the license may be found at > http://opensource.org/licenses/bsd-license.php. > @@ -329,11 +329,11 @@ HttpBootLoadFile ( > // > // Parse the cached offer to get the boot file URL first. > // > 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; > } > } > > if (!Private->HttpCreated) { > @@ -398,26 +398,29 @@ HttpBootLoadFile ( > ImageType > ); > > 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; > } > > /** > Disable the use of UEFI HTTP boot function. > -- > 2.16.2.windows.1 > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

