public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Zhang Lubo <lubo.zhang@intel.com>
To: edk2-devel@lists.01.org
Cc: Sriram Subramanian <sriram-s@hpe.com>,
	Ye Ting <ting.ye@intel.com>, Fu Siyuan <siyuan.fu@intel.com>,
	Wu Jiaxin <jiaxin.wu@intel.com>
Subject: [patch] NetworkPkg: Fix protocol handler service in HttpDxe.
Date: Sun, 22 Jan 2017 09:40:30 +0800	[thread overview]
Message-ID: <1485049230-21348-1-git-send-email-lubo.zhang@intel.com> (raw)

When we create a HTTP driver service binding private
instance, there may be different DriverBindingHandle
for Ipv4 or Ipv6, so it is essential to distinguish
the HttpService image which will be used in open
protocol or close protocol.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Cc: Sriram Subramanian <sriram-s@hpe.com>
Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Wu Jiaxin <jiaxin.wu@intel.com>
---
 NetworkPkg/HttpDxe/HttpDns.c    | 18 ++++++++--------
 NetworkPkg/HttpDxe/HttpDriver.c | 21 +++++++++---------
 NetworkPkg/HttpDxe/HttpImpl.c   | 11 ++++++++--
 NetworkPkg/HttpDxe/HttpProto.c  | 48 ++++++++++++++++++++---------------------
 NetworkPkg/HttpDxe/HttpProto.h  |  5 +++--
 5 files changed, 55 insertions(+), 48 deletions(-)

diff --git a/NetworkPkg/HttpDxe/HttpDns.c b/NetworkPkg/HttpDxe/HttpDns.c
index 0f5fe18..59cd7b3 100644
--- a/NetworkPkg/HttpDxe/HttpDns.c
+++ b/NetworkPkg/HttpDxe/HttpDns.c
@@ -1,9 +1,9 @@
 /** @file
   Routines for HttpDxe driver to perform DNS resolution based on UEFI DNS protocols.
 
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
 This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License
 which accompanies this distribution.  The full text of the license may be found at
 http://opensource.org/licenses/bsd-license.php
 
@@ -86,11 +86,11 @@ HttpDns4 (
   //
   // Create a DNS child instance and get the protocol.
   //
   Status = NetLibCreateServiceChild (
              Service->ControllerHandle,
-             Service->ImageHandle,
+             Service->Ip4DriverBindingHandle,
              &gEfiDns4ServiceBindingProtocolGuid,
              &Dns4Handle
              );
   if (EFI_ERROR (Status)) {
     goto Exit;
@@ -98,11 +98,11 @@ HttpDns4 (
 
   Status = gBS->OpenProtocol (
                   Dns4Handle,
                   &gEfiDns4ProtocolGuid,
                   (VOID **) &Dns4,
-                  Service->ImageHandle,
+                  Service->Ip4DriverBindingHandle,
                   Service->ControllerHandle,
                   EFI_OPEN_PROTOCOL_BY_DRIVER
                   );
   if (EFI_ERROR (Status)) {
     goto Exit;
@@ -194,19 +194,19 @@ Exit:
     Dns4->Configure (Dns4, NULL);
     
     gBS->CloseProtocol (
            Dns4Handle,
            &gEfiDns4ProtocolGuid,
-           Service->ImageHandle,
+           Service->Ip4DriverBindingHandle,
            Service->ControllerHandle
            );
   }
 
   if (Dns4Handle != NULL) {
     NetLibDestroyServiceChild (
       Service->ControllerHandle,
-      Service->ImageHandle,
+      Service->Ip4DriverBindingHandle,
       &gEfiDns4ServiceBindingProtocolGuid,
       Dns4Handle
       );
   }
 
@@ -288,11 +288,11 @@ HttpDns6 (
   //
   // Create a DNSv6 child instance and get the protocol.
   //
   Status = NetLibCreateServiceChild (
              Service->ControllerHandle,
-             Service->ImageHandle,
+             Service->Ip6DriverBindingHandle,
              &gEfiDns6ServiceBindingProtocolGuid,
              &Dns6Handle
              );
   if (EFI_ERROR (Status)) {
     goto Exit;
@@ -300,11 +300,11 @@ HttpDns6 (
   
   Status = gBS->OpenProtocol (
                   Dns6Handle,
                   &gEfiDns6ProtocolGuid,
                   (VOID **) &Dns6,
-                  Service->ImageHandle,
+                  Service->Ip6DriverBindingHandle,
                   Service->ControllerHandle,
                   EFI_OPEN_PROTOCOL_BY_DRIVER
                   );
   if (EFI_ERROR (Status)) {
     goto Exit;
@@ -391,19 +391,19 @@ Exit:
     Dns6->Configure (Dns6, NULL);
     
     gBS->CloseProtocol (
            Dns6Handle,
            &gEfiDns6ProtocolGuid,
-           Service->ImageHandle,
+           Service->Ip6DriverBindingHandle,
            Service->ControllerHandle
            );
   }
 
   if (Dns6Handle != NULL) {
     NetLibDestroyServiceChild (
       Service->ControllerHandle,
-      Service->ImageHandle,
+      Service->Ip6DriverBindingHandle,
       &gEfiDns6ServiceBindingProtocolGuid,
       Dns6Handle
       );
   }
 
diff --git a/NetworkPkg/HttpDxe/HttpDriver.c b/NetworkPkg/HttpDxe/HttpDriver.c
index de27635..5727526 100644
--- a/NetworkPkg/HttpDxe/HttpDriver.c
+++ b/NetworkPkg/HttpDxe/HttpDriver.c
@@ -1,9 +1,9 @@
 /** @file
   The driver binding and service binding protocol for HttpDxe driver.
 
-  Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2015 - 2017, 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
   which accompanies this distribution.  The full text of the license may be found at
@@ -43,21 +43,19 @@ EFI_DRIVER_BINDING_PROTOCOL gHttpDxeIp6DriverBinding = {
 /**
   Create a HTTP driver service binding private instance.
 
   @param[in]  Controller         The controller that has TCP4 service binding
                                  installed.
-  @param[in]  ImageHandle        The HTTP driver's image handle.
   @param[out] ServiceData        Point to HTTP driver private instance.
 
   @retval EFI_OUT_OF_RESOURCES   Failed to allocate some resources.
   @retval EFI_SUCCESS            A new HTTP driver private instance is created.
 
 **/
 EFI_STATUS
 HttpCreateService (
   IN  EFI_HANDLE            Controller,
-  IN  EFI_HANDLE            ImageHandle,
   OUT HTTP_SERVICE          **ServiceData
   )
 {
   HTTP_SERVICE     *HttpService;
 
@@ -70,11 +68,10 @@ HttpCreateService (
   }
 
   HttpService->Signature = HTTP_SERVICE_SIGNATURE;
   HttpService->ServiceBinding.CreateChild = HttpServiceBindingCreateChild;
   HttpService->ServiceBinding.DestroyChild = HttpServiceBindingDestroyChild;
-  HttpService->ImageHandle = ImageHandle;
   HttpService->ControllerHandle = Controller;
   HttpService->ChildrenNumber = 0;
   InitializeListHead (&HttpService->ChildrenList);
   
   *ServiceData = HttpService;
@@ -102,17 +99,17 @@ HttpCleanService (
   if (!UsingIpv6) {
     if (HttpService->Tcp4ChildHandle != NULL) {
       gBS->CloseProtocol (
              HttpService->Tcp4ChildHandle,
              &gEfiTcp4ProtocolGuid,
-             HttpService->ImageHandle,
+             HttpService->Ip4DriverBindingHandle,
              HttpService->ControllerHandle
              );
     
       NetLibDestroyServiceChild (
         HttpService->ControllerHandle,
-        HttpService->ImageHandle,
+        HttpService->Ip4DriverBindingHandle,
         &gEfiTcp4ServiceBindingProtocolGuid,
         HttpService->Tcp4ChildHandle
         );
       
       HttpService->Tcp4ChildHandle = NULL;
@@ -120,17 +117,17 @@ HttpCleanService (
   } else {
     if (HttpService->Tcp6ChildHandle != NULL) {
       gBS->CloseProtocol (
              HttpService->Tcp6ChildHandle,
              &gEfiTcp6ProtocolGuid,
-             HttpService->ImageHandle,
+             HttpService->Ip6DriverBindingHandle,
              HttpService->ControllerHandle
              );
     
       NetLibDestroyServiceChild (
         HttpService->ControllerHandle,
-        HttpService->ImageHandle,
+        HttpService->Ip6DriverBindingHandle,
         &gEfiTcp6ServiceBindingProtocolGuid,
         HttpService->Tcp6ChildHandle
         );
       
       HttpService->Tcp6ChildHandle = NULL;
@@ -380,11 +377,11 @@ HttpDxeStart (
                   );
 
   if (!EFI_ERROR (Status)) {
     HttpService = HTTP_SERVICE_FROM_PROTOCOL (ServiceBinding);
   } else {
-    Status = HttpCreateService (ControllerHandle, This->DriverBindingHandle, &HttpService);
+    Status = HttpCreateService (ControllerHandle, &HttpService);
     if (EFI_ERROR (Status)) {
       return Status;
     }
     
     ASSERT (HttpService != NULL);
@@ -403,11 +400,12 @@ HttpDxeStart (
       goto ON_ERROR;
     }
   }
 
   if (IpVersion == IP_VERSION_4) {
-    
+    HttpService->Ip4DriverBindingHandle = This->DriverBindingHandle;
+
     if (HttpService->Tcp4ChildHandle == NULL) {
       //
       // Create a TCP4 child instance, but do not configure it. This will establish the parent-child relationship.
       //
       Status = NetLibCreateServiceChild (
@@ -438,11 +436,12 @@ HttpDxeStart (
       return EFI_ALREADY_STARTED;
     }
 
   } else {
     UsingIpv6 = TRUE;
-    
+    HttpService->Ip6DriverBindingHandle = This->DriverBindingHandle;
+
     if (HttpService->Tcp6ChildHandle == NULL) {
       //
       // Create a TCP6 child instance, but do not configure it. This will establish the parent-child relationship.
       //
       Status = NetLibCreateServiceChild (
diff --git a/NetworkPkg/HttpDxe/HttpImpl.c b/NetworkPkg/HttpDxe/HttpImpl.c
index d19f733..bd8e0c0 100644
--- a/NetworkPkg/HttpDxe/HttpImpl.c
+++ b/NetworkPkg/HttpDxe/HttpImpl.c
@@ -1,9 +1,9 @@
 /** @file
   Implementation of EFI_HTTP_PROTOCOL protocol interfaces.
 
-  Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
   (C) Copyright 2015-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
   which accompanies this distribution.  The full text of the license may be found at
@@ -247,10 +247,11 @@ EfiHttpRequest (
   UINTN                         UrlLen;
   CHAR16                        *HostNameStr;
   HTTP_TOKEN_WRAP               *Wrap;
   CHAR8                         *FileUrl;
   UINTN                         RequestMsgSize;
+  EFI_HANDLE                    ImageHandle;
 
   //
   // Initializations
   //
   Url = NULL;
@@ -359,12 +360,18 @@ EfiHttpRequest (
     //
     if (HttpInstance->UseHttps && HttpInstance->TlsChildHandle == NULL) {
       //
       // Use TlsSb to create Tls child and open the TLS protocol.
       //
+      if (HttpInstance->LocalAddressIsIPv6) {
+        ImageHandle = HttpInstance->Service->Ip6DriverBindingHandle;
+      } else {
+        ImageHandle = HttpInstance->Service->Ip4DriverBindingHandle;
+      }
+
       HttpInstance->TlsChildHandle = TlsCreateChild (
-                                       HttpInstance->Service->ImageHandle,
+                                       ImageHandle,
                                        &(HttpInstance->Tls),
                                        &(HttpInstance->TlsConfiguration)
                                        );
       if (HttpInstance->TlsChildHandle == NULL) {
         return EFI_DEVICE_ERROR;
diff --git a/NetworkPkg/HttpDxe/HttpProto.c b/NetworkPkg/HttpDxe/HttpProto.c
index 2e8c42e..3d61ba2 100644
--- a/NetworkPkg/HttpDxe/HttpProto.c
+++ b/NetworkPkg/HttpDxe/HttpProto.c
@@ -640,11 +640,11 @@ HttpInitProtocol (
     //
     // Create TCP4 child.
     //
     Status = NetLibCreateServiceChild (
                HttpInstance->Service->ControllerHandle,
-               HttpInstance->Service->ImageHandle,
+               HttpInstance->Service->Ip4DriverBindingHandle,
                &gEfiTcp4ServiceBindingProtocolGuid,
                &HttpInstance->Tcp4ChildHandle
                );
 
     if (EFI_ERROR (Status)) {
@@ -653,11 +653,11 @@ HttpInitProtocol (
 
     Status = gBS->OpenProtocol (
                     HttpInstance->Tcp4ChildHandle,
                     &gEfiTcp4ProtocolGuid,
                     (VOID **) &Interface,
-                    HttpInstance->Service->ImageHandle,
+                    HttpInstance->Service->Ip4DriverBindingHandle,
                     HttpInstance->Service->ControllerHandle,
                     EFI_OPEN_PROTOCOL_BY_DRIVER
                     );
                     
     if (EFI_ERROR (Status)) {
@@ -666,11 +666,11 @@ HttpInitProtocol (
 
     Status = gBS->OpenProtocol (
                     HttpInstance->Tcp4ChildHandle,
                     &gEfiTcp4ProtocolGuid,
                     (VOID **) &HttpInstance->Tcp4,
-                    HttpInstance->Service->ImageHandle,
+                    HttpInstance->Service->Ip4DriverBindingHandle,
                     HttpInstance->Handle,
                     EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
                     );
     if (EFI_ERROR(Status)) {
       goto ON_ERROR;
@@ -678,11 +678,11 @@ HttpInitProtocol (
 
     Status = gBS->OpenProtocol (
                     HttpInstance->Service->Tcp4ChildHandle,
                     &gEfiTcp4ProtocolGuid,
                     (VOID **) &Interface,
-                    HttpInstance->Service->ImageHandle,
+                    HttpInstance->Service->Ip4DriverBindingHandle,
                     HttpInstance->Handle,
                     EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
                     );
     if (EFI_ERROR(Status)) {
       goto ON_ERROR;
@@ -691,11 +691,11 @@ HttpInitProtocol (
     //
     // Create TCP6 Child.
     //
     Status = NetLibCreateServiceChild (
                HttpInstance->Service->ControllerHandle,
-               HttpInstance->Service->ImageHandle,
+               HttpInstance->Service->Ip6DriverBindingHandle,
                &gEfiTcp6ServiceBindingProtocolGuid,
                &HttpInstance->Tcp6ChildHandle
                );
 
     if (EFI_ERROR (Status)) {
@@ -704,11 +704,11 @@ HttpInitProtocol (
 
     Status = gBS->OpenProtocol (
                     HttpInstance->Tcp6ChildHandle,
                     &gEfiTcp6ProtocolGuid,
                     (VOID **) &Interface,
-                    HttpInstance->Service->ImageHandle,
+                    HttpInstance->Service->Ip6DriverBindingHandle,
                     HttpInstance->Service->ControllerHandle,
                     EFI_OPEN_PROTOCOL_BY_DRIVER
                     );
     
     if (EFI_ERROR (Status)) {
@@ -717,11 +717,11 @@ HttpInitProtocol (
 
     Status = gBS->OpenProtocol (
                     HttpInstance->Tcp6ChildHandle,
                     &gEfiTcp6ProtocolGuid,
                     (VOID **) &HttpInstance->Tcp6,
-                    HttpInstance->Service->ImageHandle,
+                    HttpInstance->Service->Ip6DriverBindingHandle,
                     HttpInstance->Handle,
                     EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
                     );
     
     if (EFI_ERROR(Status)) {
@@ -730,11 +730,11 @@ HttpInitProtocol (
 
     Status = gBS->OpenProtocol (
                     HttpInstance->Service->Tcp6ChildHandle,
                     &gEfiTcp6ProtocolGuid,
                     (VOID **) &Interface,
-                    HttpInstance->Service->ImageHandle,
+                    HttpInstance->Service->Ip6DriverBindingHandle,
                     HttpInstance->Handle,
                     EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
                     );
 
     if (EFI_ERROR(Status)) {
@@ -754,66 +754,66 @@ ON_ERROR:
   
   if (HttpInstance->Tcp4ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Tcp4ChildHandle,
            &gEfiTcp4ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip4DriverBindingHandle,
            HttpInstance->Service->ControllerHandle
            );
 
     gBS->CloseProtocol (
            HttpInstance->Tcp4ChildHandle,
            &gEfiTcp4ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip4DriverBindingHandle,
            HttpInstance->Handle
            );    
     
     NetLibDestroyServiceChild (
       HttpInstance->Service->ControllerHandle,
-      HttpInstance->Service->ImageHandle,
+      HttpInstance->Service->Ip4DriverBindingHandle,
       &gEfiTcp4ServiceBindingProtocolGuid,
       HttpInstance->Tcp4ChildHandle
       );
   }
   
   if (HttpInstance->Service->Tcp4ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Service->Tcp4ChildHandle,
            &gEfiTcp4ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip4DriverBindingHandle,
            HttpInstance->Handle
            );
   }
   
   if (HttpInstance->Tcp6ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Tcp6ChildHandle,
            &gEfiTcp6ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip6DriverBindingHandle,
            HttpInstance->Service->ControllerHandle
            );
 
     gBS->CloseProtocol (
            HttpInstance->Tcp6ChildHandle,
            &gEfiTcp6ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip6DriverBindingHandle,
            HttpInstance->Handle
            );
     
     NetLibDestroyServiceChild (
       HttpInstance->Service->ControllerHandle,
-      HttpInstance->Service->ImageHandle,
+      HttpInstance->Service->Ip6DriverBindingHandle,
       &gEfiTcp6ServiceBindingProtocolGuid,
       HttpInstance->Tcp6ChildHandle
       );
   }
   
   if (HttpInstance->Service->Tcp6ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Service->Tcp6ChildHandle,
            &gEfiTcp6ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip6DriverBindingHandle,
            HttpInstance->Handle
            );
   }
 
   return EFI_UNSUPPORTED;
@@ -866,66 +866,66 @@ HttpCleanProtocol (
 
   if (HttpInstance->Tcp4ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Tcp4ChildHandle,
            &gEfiTcp4ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip4DriverBindingHandle,
            HttpInstance->Service->ControllerHandle
            );
 
     gBS->CloseProtocol (
            HttpInstance->Tcp4ChildHandle,
            &gEfiTcp4ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip4DriverBindingHandle,
            HttpInstance->Handle
            );
     
     NetLibDestroyServiceChild (
       HttpInstance->Service->ControllerHandle,
-      HttpInstance->Service->ImageHandle,
+      HttpInstance->Service->Ip4DriverBindingHandle,
       &gEfiTcp4ServiceBindingProtocolGuid,
       HttpInstance->Tcp4ChildHandle
       );
   }
 
   if (HttpInstance->Service->Tcp4ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Service->Tcp4ChildHandle,
            &gEfiTcp4ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip4DriverBindingHandle,
            HttpInstance->Handle
            );
   }  
 
   if (HttpInstance->Tcp6ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Tcp6ChildHandle,
            &gEfiTcp6ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip6DriverBindingHandle,
            HttpInstance->Service->ControllerHandle
            );
 
     gBS->CloseProtocol (
            HttpInstance->Tcp6ChildHandle,
            &gEfiTcp6ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip6DriverBindingHandle,
            HttpInstance->Handle
            );
     
     NetLibDestroyServiceChild (
       HttpInstance->Service->ControllerHandle,
-      HttpInstance->Service->ImageHandle,
+      HttpInstance->Service->Ip6DriverBindingHandle,
       &gEfiTcp6ServiceBindingProtocolGuid,
       HttpInstance->Tcp6ChildHandle
       );
   }
   
   if (HttpInstance->Service->Tcp6ChildHandle != NULL) {
     gBS->CloseProtocol (
            HttpInstance->Service->Tcp6ChildHandle,
            &gEfiTcp6ProtocolGuid,
-           HttpInstance->Service->ImageHandle,
+           HttpInstance->Service->Ip6DriverBindingHandle,
            HttpInstance->Handle
            );
   }
 
   TlsCloseTxRxEvent (HttpInstance); 
diff --git a/NetworkPkg/HttpDxe/HttpProto.h b/NetworkPkg/HttpDxe/HttpProto.h
index ced8aca..95fb484 100644
--- a/NetworkPkg/HttpDxe/HttpProto.h
+++ b/NetworkPkg/HttpDxe/HttpProto.h
@@ -1,9 +1,9 @@
 /** @file
   The header files of miscellaneous routines for HttpDxe driver.
 
-Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2017, 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
 which accompanies this distribution.  The full text of the license may be found at
 http://opensource.org/licenses/bsd-license.php
@@ -57,11 +57,12 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define HTTP_URL_BUFFER_LEN          4096
 
 typedef struct _HTTP_SERVICE {
   UINT32                        Signature;
   EFI_SERVICE_BINDING_PROTOCOL  ServiceBinding;
-  EFI_HANDLE                    ImageHandle;
+  EFI_HANDLE                    Ip4DriverBindingHandle;
+  EFI_HANDLE                    Ip6DriverBindingHandle;
   EFI_HANDLE                    ControllerHandle;
   EFI_HANDLE                    Tcp4ChildHandle;
   EFI_HANDLE                    Tcp6ChildHandle;
   LIST_ENTRY                    ChildrenList;
   UINTN                         ChildrenNumber;
-- 
1.9.5.msysgit.1



             reply	other threads:[~2017-01-22  1:40 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-22  1:40 Zhang Lubo [this message]
2017-01-22  2:41 ` [patch] NetworkPkg: Fix protocol handler service in HttpDxe Wu, Jiaxin
2017-01-22  4:49 ` Fu, Siyuan
2017-01-22  6:28 ` Subramanian, Sriram

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1485049230-21348-1-git-send-email-lubo.zhang@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox