summaryrefslogtreecommitdiffstats
path: root/NetworkPkg/HttpDxe/HttpImpl.c
diff options
context:
space:
mode:
authorZhang Lubo <lubo.zhang@intel.com>2016-01-29 11:17:34 +0800
committerJiaxin Wu <jiaxin.wu@intel.com>2016-02-03 11:48:36 +0800
commit072289f45c7ac13e6f70ba4ad739e95086e5d2d2 (patch)
treebf90d3afaf7c4d06cd801d31f5e06cfea092f658 /NetworkPkg/HttpDxe/HttpImpl.c
parent10a3840ff9edbe7038ced76c551bffd087dc4387 (diff)
downloadedk2-072289f45c7ac13e6f70ba4ad739e95086e5d2d2.tar.gz
edk2-072289f45c7ac13e6f70ba4ad739e95086e5d2d2.tar.bz2
edk2-072289f45c7ac13e6f70ba4ad739e95086e5d2d2.zip
NetworkPkg:Add a new error status code EFI_HTTP_ERROR
v4: * Update macro HTTP_ERROR_STATUS to HTTP_ERROR_OR_NOT_SUPPORT_STATUS_CODE Update copyright year. When the Error Status of ResponseData returned from HttpIoRecvResponse function during the Http HEAD method, it should also return error status to Load file protocol. Add a new error status code EFI_HTTP_ERROR in corresponding with the UEFI 2.6 spec . When a HTTP error occurred during the network operation, The EFI_HTTP_ERROR is returned in token. Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Ye Ting <ting.ye@intel.com> Cc: Wu Jiaxin <jiaxin.wu@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zhang Lubo <lubo.zhang@intel.com> Reviewed-by: Siyuan Fu <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com>
Diffstat (limited to 'NetworkPkg/HttpDxe/HttpImpl.c')
-rw-r--r--NetworkPkg/HttpDxe/HttpImpl.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/NetworkPkg/HttpDxe/HttpImpl.c b/NetworkPkg/HttpDxe/HttpImpl.c
index b46f0ae3ca..a068cfb76b 100644
--- a/NetworkPkg/HttpDxe/HttpImpl.c
+++ b/NetworkPkg/HttpDxe/HttpImpl.c
@@ -1,7 +1,7 @@
/** @file
Implementation of EFI_HTTP_PROTOCOL protocol interfaces.
- Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
This program and the accompanying materials
@@ -976,7 +976,7 @@ HttpResponseWorker (
HttpHeaders = NULL;
HttpMsg->Data.Response->StatusCode = HttpMappingToStatusCode (StatusCode);
-
+ HttpInstance->StatusCode = StatusCode;
//
// Init message-body parser by header information.
//
@@ -1111,7 +1111,13 @@ Exit:
if (Item != NULL) {
NetMapRemoveItem (&Wrap->HttpInstance->RxTokens, Item, NULL);
}
- Token->Status = Status;
+
+ if (HttpInstance->StatusCode >= HTTP_ERROR_OR_NOT_SUPPORT_STATUS_CODE) {
+ Token->Status = EFI_HTTP_ERROR;
+ } else {
+ Token->Status = Status;
+ }
+
gBS->SignalEvent (Token->Event);
HttpCloseTcpRxEvent (Wrap);
FreePool (Wrap);
@@ -1136,7 +1142,12 @@ Error:
HttpInstance->CacheBody = NULL;
}
- Token->Status = Status;
+ if (HttpInstance->StatusCode >= HTTP_ERROR_OR_NOT_SUPPORT_STATUS_CODE) {
+ Token->Status = EFI_HTTP_ERROR;
+ } else {
+ Token->Status = Status;
+ }
+
gBS->SignalEvent (Token->Event);
return Status;