/** @file\r
Implementation of EFI_HTTP_PROTOCOL protocol interfaces.\r
\r
- Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>\r
\r
This program and the accompanying materials\r
HTTP_TOKEN_WRAP *Wrap;\r
CHAR8 *FileUrl;\r
UINTN RequestMsgSize;\r
+ EFI_HANDLE ImageHandle;\r
\r
//\r
// Initializations\r
//\r
HttpInstance->UseHttps = IsHttpsUrl (Url);\r
\r
+ //\r
+ // HTTP is disabled, return directly if the URI is not HTTPS.\r
+ //\r
+ if (!PcdGetBool (PcdAllowHttpConnections) && !(HttpInstance->UseHttps)) {\r
+ \r
+ DEBUG ((EFI_D_ERROR, "EfiHttpRequest: HTTP is disabled.\n"));\r
+\r
+ return EFI_ACCESS_DENIED;\r
+ }\r
+\r
//\r
// Check whether we need to create Tls child and open the TLS protocol.\r
//\r
//\r
// Use TlsSb to create Tls child and open the TLS protocol.\r
//\r
+ if (HttpInstance->LocalAddressIsIPv6) {\r
+ ImageHandle = HttpInstance->Service->Ip6DriverBindingHandle;\r
+ } else {\r
+ ImageHandle = HttpInstance->Service->Ip4DriverBindingHandle;\r
+ }\r
+\r
HttpInstance->TlsChildHandle = TlsCreateChild (\r
- HttpInstance->Service->ImageHandle,\r
+ ImageHandle,\r
&(HttpInstance->Tls),\r
&(HttpInstance->TlsConfiguration)\r
);\r
\r
Status = HttpGenRequestMessage (HttpMsg, FileUrl, &RequestMsg, &RequestMsgSize);\r
\r
- if (EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status) || NULL == RequestMsg) {\r
goto Error3;\r
}\r
\r
+ ASSERT (RequestMsg != NULL);\r
+\r
//\r
// Every request we insert a TxToken and a response call would remove the TxToken.\r
// In cases of PUT/POST, after an initial request-response pair, we would do a\r