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

Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>

Thanks,
Jiaxin

> -----Original Message-----
> From: Zhang, Lubo
> Sent: Sunday, January 22, 2017 9:41 AM
> 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.
> 
> 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  2:41 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-22  1:40 [patch] NetworkPkg: Fix protocol handler service in HttpDxe Zhang Lubo
2017-01-22  2:41 ` Wu, Jiaxin [this message]
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=895558F6EA4E3B41AC93A00D163B7274162969C8@SHSMSX103.ccr.corp.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