From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=siyuan.fu@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id EFDCB220D4C0C for ; Tue, 14 Nov 2017 17:47:47 -0800 (PST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Nov 2017 17:51:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,397,1505804400"; d="scan'208";a="1961313" Received: from sfu5-mobl.ccr.corp.intel.com ([10.239.192.240]) by FMSMGA003.fm.intel.com with ESMTP; 14 Nov 2017 17:51:54 -0800 From: Fu Siyuan To: edk2-devel@lists.01.org Cc: Wu Jiaxin , Ye Ting Date: Wed, 15 Nov 2017 09:51:51 +0800 Message-Id: <20171115015151.16588-1-siyuan.fu@intel.com> X-Mailer: git-send-email 2.13.0.windows.1 Subject: [Patch V2] NetworkPkg: Print error message to screen if error occurs during HTTP boot. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 15 Nov 2017 01:47:48 -0000 V2 update: Add error message is URI address is not correct. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Fu Siyuan Cc: Wu Jiaxin Cc: Ye Ting --- NetworkPkg/HttpBootDxe/HttpBootImpl.c | 21 +++++++++++++++++++++ NetworkPkg/HttpBootDxe/HttpBootSupport.c | 2 ++ NetworkPkg/HttpDxe/HttpImpl.c | 1 + 3 files changed, 24 insertions(+) diff --git a/NetworkPkg/HttpBootDxe/HttpBootImpl.c b/NetworkPkg/HttpBootDxe/HttpBootImpl.c index 06a8a6a..d591db5 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootImpl.c +++ b/NetworkPkg/HttpBootDxe/HttpBootImpl.c @@ -327,6 +327,7 @@ HttpBootLoadFile ( // Status = HttpBootDiscoverBootInfo (Private); if (EFI_ERROR (Status)) { + AsciiPrint ("\n Error: Could not discover the boot information for DHCP server.\n"); goto ON_EXIT; } } @@ -369,6 +370,7 @@ HttpBootLoadFile ( &Private->ImageType ); if (EFI_ERROR (Status) && Status != EFI_BUFFER_TOO_SMALL) { + AsciiPrint ("\n Error: Could not retrieve NBP file size from HTTP server.\n"); goto ON_EXIT; } } @@ -394,6 +396,22 @@ 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"); + } return Status; } @@ -555,6 +573,7 @@ HttpBootDxeLoadFile ( MediaPresent = TRUE; NetLibDetectMedia (Private->Controller, &MediaPresent); if (!MediaPresent) { + AsciiPrint ("\n Error: Could not detect network connection.\n"); return EFI_NO_MEDIA; } @@ -595,6 +614,8 @@ HttpBootDxeLoadFile ( Status = HttpBootRegisterRamDisk (Private, *BufferSize, Buffer, ImageType); if (!EFI_ERROR (Status)) { Status = EFI_WARN_FILE_SYSTEM; + } else { + AsciiPrint ("\n Error: Could not register RAM disk to the system.\n"); } } diff --git a/NetworkPkg/HttpBootDxe/HttpBootSupport.c b/NetworkPkg/HttpBootDxe/HttpBootSupport.c index d508e2c..7ca48f3 100644 --- a/NetworkPkg/HttpBootDxe/HttpBootSupport.c +++ b/NetworkPkg/HttpBootDxe/HttpBootSupport.c @@ -1093,6 +1093,7 @@ HttpBootCheckUriScheme ( // Return EFI_INVALID_PARAMETER if the URI is not HTTP or HTTPS. // if ((AsciiStrnCmp (Uri, "http://", 7) != 0) && (AsciiStrnCmp (Uri, "https://", 8) != 0)) { + AsciiPrint ("\n Error: Invalid URI address.\n"); DEBUG ((EFI_D_ERROR, "HttpBootCheckUriScheme: Invalid Uri.\n")); return EFI_INVALID_PARAMETER; } @@ -1101,6 +1102,7 @@ HttpBootCheckUriScheme ( // HTTP is disabled, return EFI_ACCESS_DENIED if the URI is HTTP. // if (!PcdGetBool (PcdAllowHttpConnections) && (AsciiStrnCmp (Uri, "http://", 7) == 0)) { + AsciiPrint ("\n Error: Access forbidden, only HTTPS connection is allowed.\n"); DEBUG ((EFI_D_ERROR, "HttpBootCheckUriScheme: HTTP is disabled.\n")); return EFI_ACCESS_DENIED; } diff --git a/NetworkPkg/HttpDxe/HttpImpl.c b/NetworkPkg/HttpDxe/HttpImpl.c index 46d0323..57fa39f 100644 --- a/NetworkPkg/HttpDxe/HttpImpl.c +++ b/NetworkPkg/HttpDxe/HttpImpl.c @@ -523,6 +523,7 @@ EfiHttpRequest ( FreePool (HostNameStr); if (EFI_ERROR (Status)) { + DEBUG ((EFI_D_ERROR, "Error: Could not retrieve the host address from DNS server.\n")); goto Error1; } } -- 1.9.5.msysgit.1