]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/HttpDxe/HttpProto.h
NetworkPkg/HttpDxe: Fix the bug when parsing HTTP(S) message body.
[mirror_edk2.git] / NetworkPkg / HttpDxe / HttpProto.h
index ced8acac367c200f2d1e775cd27f2c33fe3d48ad..fa57dbfd39d9de12cadcddd6d0e0d552def92fe9 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   The header files of miscellaneous routines for HttpDxe driver.\r
 \r
-Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
@@ -59,7 +59,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 typedef struct _HTTP_SERVICE {\r
   UINT32                        Signature;\r
   EFI_SERVICE_BINDING_PROTOCOL  ServiceBinding;\r
-  EFI_HANDLE                    ImageHandle;\r
+  EFI_HANDLE                    Ip4DriverBindingHandle;\r
+  EFI_HANDLE                    Ip6DriverBindingHandle;\r
   EFI_HANDLE                    ControllerHandle;\r
   EFI_HANDLE                    Tcp4ChildHandle;\r
   EFI_HANDLE                    Tcp6ChildHandle;\r
@@ -90,6 +91,15 @@ typedef struct {
   EFI_TLS_SESSION_STATE         SessionState;\r
 } TLS_CONFIG_DATA;\r
 \r
+//\r
+// Callback data for HTTP_PARSER_CALLBACK()\r
+//\r
+typedef struct {\r
+  UINTN                         ParseDataLength;\r
+  VOID                          *ParseData;\r
+  VOID                          *Wrap;\r
+} HTTP_CALLBACK_DATA;\r
+\r
 typedef struct _HTTP_PROTOCOL {\r
   UINT32                        Signature;\r
   EFI_HTTP_PROTOCOL             Http;\r
@@ -116,18 +126,18 @@ typedef struct _HTTP_PROTOCOL {
   CHAR8                         *RemoteHost;\r
   UINT16                        RemotePort;\r
   EFI_IPv4_ADDRESS              RemoteAddr;\r
-  \r
+\r
   EFI_HANDLE                    Tcp6ChildHandle;\r
   EFI_TCP6_PROTOCOL             *Tcp6;\r
   EFI_TCP6_CONFIG_DATA          Tcp6CfgData;\r
   EFI_TCP6_OPTION               Tcp6Option;\r
-  \r
+\r
   EFI_TCP6_CONNECTION_TOKEN     Tcp6ConnToken;\r
   BOOLEAN                       IsTcp6ConnDone;\r
   EFI_TCP6_CLOSE_TOKEN          Tcp6CloseToken;\r
   BOOLEAN                       IsTcp6CloseDone;\r
   EFI_IPv6_ADDRESS              RemoteIpv6Addr;\r
\r
+\r
   //\r
   // Rx4Token or Rx6Token used for receiving HTTP header.\r
   //\r
@@ -148,7 +158,8 @@ typedef struct _HTTP_PROTOCOL {
   // HTTP message-body parser.\r
   //\r
   VOID                          *MsgParser;\r
-  \r
+  HTTP_CALLBACK_DATA            CallbackData;\r
+\r
   EFI_HTTP_VERSION              HttpVersion;\r
   UINT32                        TimeOutMillisec;\r
   BOOLEAN                       LocalAddressIsIPv6;\r
@@ -165,7 +176,8 @@ typedef struct _HTTP_PROTOCOL {
   // Https Support\r
   //\r
   BOOLEAN                          UseHttps;\r
-  \r
+\r
+  EFI_SERVICE_BINDING_PROTOCOL     *TlsSb;\r
   EFI_HANDLE                       TlsChildHandle; /// Tls ChildHandle\r
   TLS_CONFIG_DATA                  TlsConfigData;\r
   EFI_TLS_PROTOCOL                 *Tls;\r
@@ -209,7 +221,7 @@ typedef struct {
   )\r
 \r
 /**\r
-  The common notify function used in HTTP driver. \r
+  The common notify function used in HTTP driver.\r
 \r
   @param[in]  Event   The event signaled.\r
   @param[in]  Context The context.\r
@@ -286,14 +298,14 @@ HttpCreateTcpRxEventForHeader (
 **/\r
 EFI_STATUS\r
 HttpCreateTcpRxEvent (\r
-  IN  HTTP_TOKEN_WRAP      *Wrap \r
+  IN  HTTP_TOKEN_WRAP      *Wrap\r
   );\r
 \r
 /**\r
   Close Events for Tcp Receive Tokens for HTTP body and HTTP header.\r
 \r
   @param[in]  Wrap               Pointer to HTTP token's wrap data.\r
-  \r
+\r
 **/\r
 VOID\r
 HttpCloseTcpRxEvent (\r
@@ -306,7 +318,7 @@ HttpCloseTcpRxEvent (
   @param[in, out]  HttpInstance         Pointer to HTTP_PROTOCOL structure.\r
   @param[in]       IpVersion            Indicate us TCP4 protocol or TCP6 protocol.\r
 \r
-  @retval EFI_SUCCESS       HTTP_PROTOCOL structure is initialized successfully.                                          \r
+  @retval EFI_SUCCESS       HTTP_PROTOCOL structure is initialized successfully.\r
   @retval Others            Other error as indicated.\r
 \r
 **/\r
@@ -388,7 +400,7 @@ HttpConfigureTcp6 (
   );\r
 \r
 /**\r
-  Check existing TCP connection, if in error state, recover TCP4 connection. Then, \r
+  Check existing TCP connection, if in error state, recover TCP4 connection. Then,\r
   connect one TLS session if required.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
@@ -404,7 +416,7 @@ HttpConnectTcp4 (
   );\r
 \r
 /**\r
-  Check existing TCP connection, if in error state, recover TCP6 connection. Then, \r
+  Check existing TCP connection, if in error state, recover TCP6 connection. Then,\r
   connect one TLS session if required.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
@@ -488,7 +500,7 @@ HttpTcpNotReady (
   @param[in]  Configure          The Flag indicates whether need to initialize session.\r
   @param[in]  TlsConfigure       The Flag indicates whether it's the new Tls session.\r
 \r
-  @retval EFI_SUCCESS            The initialization of session is done. \r
+  @retval EFI_SUCCESS            The initialization of session is done.\r
   @retval Others                 Other error as indicated.\r
 \r
 **/\r
@@ -548,7 +560,7 @@ HttpTcpReceive (
   @param[in, out]  BufferSize      The size of buffer to cacahe the header message.\r
   @param[in]       Timeout         The time to wait for receiving the header packet.\r
 \r
-  @retval EFI_SUCCESS              The HTTP header is received.                          \r
+  @retval EFI_SUCCESS              The HTTP header is received.\r
   @retval Others                   Other errors as indicated.\r
 \r
 **/\r
@@ -566,7 +578,7 @@ HttpTcpReceiveHeader (
   @param[in]  Wrap               The HTTP token's wrap data.\r
   @param[in]  HttpMsg            The HTTP message data.\r
 \r
-  @retval EFI_SUCCESS            The HTTP body is received.                          \r
+  @retval EFI_SUCCESS            The HTTP body is received.\r
   @retval Others                 Other error as indicated.\r
 \r
 **/\r
@@ -580,7 +592,7 @@ HttpTcpReceiveBody (
   Clean up Tcp Tokens while the Tcp transmission error occurs.\r
 \r
   @param[in]  Wrap               Pointer to HTTP token's wrap data.\r
-  \r
+\r
 **/\r
 VOID\r
 HttpTcpTokenCleanup (\r