/** @file\r
The header files of miscellaneous routines for HttpDxe driver.\r
\r
-Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>\r
+(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#ifndef __EFI_HTTP_PROTO_H__\r
#define __EFI_HTTP_PROTO_H__\r
\r
-#define DEF_BUF_LEN 2048\r
+#define DEF_BUF_LEN 2048\r
\r
#define HTTP_SERVICE_SIGNATURE SIGNATURE_32('H', 't', 't', 'S')\r
\r
HTTP_SERVICE_SIGNATURE \\r
)\r
\r
-\r
//\r
// The state of HTTP protocol. It starts from UNCONFIGED.\r
//\r
-#define HTTP_STATE_UNCONFIGED 0\r
-#define HTTP_STATE_HTTP_CONFIGED 1\r
-#define HTTP_STATE_TCP_CONFIGED 2\r
-#define HTTP_STATE_TCP_UNCONFIGED 3\r
-#define HTTP_STATE_TCP_CONNECTED 4\r
-#define HTTP_STATE_TCP_CLOSED 5\r
+#define HTTP_STATE_UNCONFIGED 0\r
+#define HTTP_STATE_HTTP_CONFIGED 1\r
+#define HTTP_STATE_TCP_CONFIGED 2\r
+#define HTTP_STATE_TCP_UNCONFIGED 3\r
+#define HTTP_STATE_TCP_CONNECTED 4\r
+#define HTTP_STATE_TCP_CLOSED 5\r
\r
//\r
// TCP configured data.\r
//\r
-#define HTTP_TOS_DEAULT 8\r
-#define HTTP_TTL_DEAULT 255\r
-#define HTTP_BUFFER_SIZE_DEAULT 65535\r
-#define HTTP_MAX_SYN_BACK_LOG 5\r
-#define HTTP_CONNECTION_TIMEOUT 60\r
-#define HTTP_DATA_RETRIES 12\r
-#define HTTP_FIN_TIMEOUT 2\r
-#define HTTP_KEEP_ALIVE_PROBES 6\r
-#define HTTP_KEEP_ALIVE_TIME 7200\r
-#define HTTP_KEEP_ALIVE_INTERVAL 30\r
-\r
-#define HTTP_URL_BUFFER_LEN 4096\r
+#define HTTP_TOS_DEAULT 8\r
+#define HTTP_TTL_DEAULT 255\r
+#define HTTP_BUFFER_SIZE_DEAULT 65535\r
+#define HTTP_MAX_SYN_BACK_LOG 5\r
+#define HTTP_CONNECTION_TIMEOUT 60\r
+#define HTTP_DATA_RETRIES 12\r
+#define HTTP_FIN_TIMEOUT 2\r
+#define HTTP_KEEP_ALIVE_PROBES 6\r
+#define HTTP_KEEP_ALIVE_TIME 7200\r
+#define HTTP_KEEP_ALIVE_INTERVAL 30\r
+\r
+#define HTTP_URL_BUFFER_LEN 4096\r
\r
typedef struct _HTTP_SERVICE {\r
- UINT32 Signature;\r
- EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;\r
- EFI_HANDLE ImageHandle;\r
- EFI_HANDLE ControllerHandle;\r
- EFI_HANDLE Tcp4ChildHandle;\r
- EFI_HANDLE Tcp6ChildHandle;\r
- LIST_ENTRY ChildrenList;\r
- UINTN ChildrenNumber;\r
- INTN State;\r
+ UINT32 Signature;\r
+ EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;\r
+ EFI_HANDLE Ip4DriverBindingHandle;\r
+ EFI_HANDLE Ip6DriverBindingHandle;\r
+ EFI_HANDLE ControllerHandle;\r
+ EFI_HANDLE Tcp4ChildHandle;\r
+ EFI_HANDLE Tcp6ChildHandle;\r
+ LIST_ENTRY ChildrenList;\r
+ UINTN ChildrenNumber;\r
+ INTN State;\r
} HTTP_SERVICE;\r
\r
typedef struct {\r
- EFI_TCP4_IO_TOKEN Tx4Token;\r
- EFI_TCP4_TRANSMIT_DATA Tx4Data;\r
- EFI_TCP6_IO_TOKEN Tx6Token;\r
- EFI_TCP6_TRANSMIT_DATA Tx6Data;\r
- EFI_TCP4_IO_TOKEN Rx4Token;\r
- EFI_TCP4_RECEIVE_DATA Rx4Data;\r
- EFI_TCP6_IO_TOKEN Rx6Token;\r
- EFI_TCP6_RECEIVE_DATA Rx6Data;\r
- BOOLEAN IsTxDone;\r
- BOOLEAN IsRxDone;\r
- UINTN BodyLen;\r
- EFI_HTTP_METHOD Method;\r
+ EFI_TCP4_IO_TOKEN Tx4Token;\r
+ EFI_TCP4_TRANSMIT_DATA Tx4Data;\r
+ EFI_TCP6_IO_TOKEN Tx6Token;\r
+ EFI_TCP6_TRANSMIT_DATA Tx6Data;\r
+ EFI_TCP4_IO_TOKEN Rx4Token;\r
+ EFI_TCP4_RECEIVE_DATA Rx4Data;\r
+ EFI_TCP6_IO_TOKEN Rx6Token;\r
+ EFI_TCP6_RECEIVE_DATA Rx6Data;\r
+ BOOLEAN IsTxDone;\r
+ BOOLEAN IsRxDone;\r
+ UINTN BodyLen;\r
+ EFI_HTTP_METHOD Method;\r
} HTTP_TCP_TOKEN_WRAP;\r
\r
+typedef struct {\r
+ EFI_TLS_VERSION Version;\r
+ EFI_TLS_CONNECTION_END ConnectionEnd;\r
+ EFI_TLS_VERIFY VerifyMethod;\r
+ EFI_TLS_VERIFY_HOST VerifyHost;\r
+ 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
- EFI_HANDLE Handle;\r
- HTTP_SERVICE *Service;\r
- LIST_ENTRY Link; // Link to all HTTP instance from the service.\r
- BOOLEAN InDestroy;\r
- INTN State;\r
-\r
- UINTN StatusCode;\r
-\r
- EFI_HANDLE Tcp4ChildHandle;\r
- EFI_TCP4_PROTOCOL *Tcp4;\r
- EFI_TCP4_CONFIG_DATA Tcp4CfgData;\r
- EFI_TCP4_OPTION Tcp4Option;\r
-\r
- EFI_TCP4_CONNECTION_TOKEN Tcp4ConnToken;\r
- BOOLEAN IsTcp4ConnDone;\r
- EFI_TCP4_CLOSE_TOKEN Tcp4CloseToken;\r
- BOOLEAN IsTcp4CloseDone;\r
- CHAR8 *RemoteHost;\r
- UINT16 RemotePort;\r
- EFI_IPv4_ADDRESS RemoteAddr;\r
- \r
- EFI_HANDLE Tcp6ChildHandle;\r
- EFI_TCP6_PROTOCOL *Tcp6;\r
- EFI_TCP6_CONFIG_DATA Tcp6CfgData;\r
- EFI_TCP6_OPTION Tcp6Option;\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
+ UINT32 Signature;\r
+ EFI_HTTP_PROTOCOL Http;\r
+ EFI_HANDLE Handle;\r
+ HTTP_SERVICE *Service;\r
+ LIST_ENTRY Link; // Link to all HTTP instance from the service.\r
+ BOOLEAN InDestroy;\r
+ INTN State;\r
+ EFI_HTTP_METHOD Method;\r
+\r
+ UINTN StatusCode;\r
+\r
+ EFI_EVENT TimeoutEvent;\r
+\r
+ EFI_HANDLE Tcp4ChildHandle;\r
+ EFI_TCP4_PROTOCOL *Tcp4;\r
+ EFI_TCP4_CONFIG_DATA Tcp4CfgData;\r
+ EFI_TCP4_OPTION Tcp4Option;\r
+\r
+ EFI_TCP4_CONNECTION_TOKEN Tcp4ConnToken;\r
+ BOOLEAN IsTcp4ConnDone;\r
+ EFI_TCP4_CLOSE_TOKEN Tcp4CloseToken;\r
+ BOOLEAN IsTcp4CloseDone;\r
+ CHAR8 *RemoteHost;\r
+ UINT16 RemotePort;\r
+ EFI_IPv4_ADDRESS RemoteAddr;\r
+\r
+ EFI_HANDLE Tcp6ChildHandle;\r
+ EFI_TCP6_PROTOCOL *Tcp6;\r
+ EFI_TCP6_CONFIG_DATA Tcp6CfgData;\r
+ EFI_TCP6_OPTION Tcp6Option;\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
// Rx4Token or Rx6Token used for receiving HTTP header.\r
//\r
- EFI_TCP4_IO_TOKEN Rx4Token;\r
- EFI_TCP4_RECEIVE_DATA Rx4Data;\r
- EFI_TCP6_IO_TOKEN Rx6Token;\r
- EFI_TCP6_RECEIVE_DATA Rx6Data;\r
- BOOLEAN IsRxDone;\r
-\r
- CHAR8 **EndofHeader;\r
- CHAR8 **HttpHeaders;\r
- CHAR8 *CacheBody;\r
- CHAR8 *NextMsg;\r
- UINTN CacheLen;\r
- UINTN CacheOffset;\r
+ EFI_TCP4_IO_TOKEN Rx4Token;\r
+ EFI_TCP4_RECEIVE_DATA Rx4Data;\r
+ EFI_TCP6_IO_TOKEN Rx6Token;\r
+ EFI_TCP6_RECEIVE_DATA Rx6Data;\r
+ BOOLEAN IsRxDone;\r
+\r
+ CHAR8 **EndofHeader;\r
+ CHAR8 **HttpHeaders;\r
+ CHAR8 *CacheBody;\r
+ CHAR8 *NextMsg;\r
+ UINTN CacheLen;\r
+ UINTN CacheOffset;\r
\r
//\r
// HTTP message-body parser.\r
//\r
- VOID *MsgParser;\r
- \r
- EFI_HTTP_VERSION HttpVersion;\r
- UINT32 TimeOutMillisec;\r
- BOOLEAN LocalAddressIsIPv6;\r
+ VOID *MsgParser;\r
+ HTTP_CALLBACK_DATA CallbackData;\r
+\r
+ EFI_HTTP_VERSION HttpVersion;\r
+ UINT32 TimeOutMillisec;\r
+ BOOLEAN LocalAddressIsIPv6;\r
+\r
+ EFI_HTTPv4_ACCESS_POINT IPv4Node;\r
+ EFI_HTTPv6_ACCESS_POINT Ipv6Node;\r
+\r
+ NET_MAP TxTokens;\r
+ NET_MAP RxTokens;\r
+\r
+ CHAR8 *Url;\r
+\r
+ //\r
+ // Https Support\r
+ //\r
+ BOOLEAN UseHttps;\r
+\r
+ EFI_SERVICE_BINDING_PROTOCOL *TlsSb;\r
+ EFI_HANDLE TlsChildHandle; /// Tls ChildHandle\r
+ TLS_CONFIG_DATA TlsConfigData;\r
+ EFI_TLS_PROTOCOL *Tls;\r
+ EFI_TLS_CONFIGURATION_PROTOCOL *TlsConfiguration;\r
+ EFI_TLS_SESSION_STATE TlsSessionState;\r
\r
- EFI_HTTPv4_ACCESS_POINT IPv4Node;\r
- EFI_HTTPv6_ACCESS_POINT Ipv6Node;\r
+ //\r
+ // TlsTxData used for transmitting TLS related messages.\r
+ //\r
+ EFI_TCP4_IO_TOKEN Tcp4TlsTxToken;\r
+ EFI_TCP4_TRANSMIT_DATA Tcp4TlsTxData;\r
+ EFI_TCP6_IO_TOKEN Tcp6TlsTxToken;\r
+ EFI_TCP6_TRANSMIT_DATA Tcp6TlsTxData;\r
+ BOOLEAN TlsIsTxDone;\r
\r
- NET_MAP TxTokens;\r
- NET_MAP RxTokens;\r
+ //\r
+ // TlsRxData used for receiving TLS related messages.\r
+ //\r
+ EFI_TCP4_IO_TOKEN Tcp4TlsRxToken;\r
+ EFI_TCP4_RECEIVE_DATA Tcp4TlsRxData;\r
+ EFI_TCP6_IO_TOKEN Tcp6TlsRxToken;\r
+ EFI_TCP6_RECEIVE_DATA Tcp6TlsRxData;\r
+ BOOLEAN TlsIsRxDone;\r
\r
- CHAR8 *Url;\r
+ BOOLEAN ConnectionClose;\r
} HTTP_PROTOCOL;\r
\r
typedef struct {\r
- EFI_HTTP_TOKEN *HttpToken;\r
- HTTP_PROTOCOL *HttpInstance;\r
- HTTP_TCP_TOKEN_WRAP TcpWrap;\r
+ EFI_HTTP_TOKEN *HttpToken;\r
+ HTTP_PROTOCOL *HttpInstance;\r
+ HTTP_TCP_TOKEN_WRAP TcpWrap;\r
} HTTP_TOKEN_WRAP;\r
\r
-\r
#define HTTP_PROTOCOL_SIGNATURE SIGNATURE_32('H', 't', 't', 'P')\r
\r
#define HTTP_INSTANCE_FROM_PROTOCOL(a) \\r
)\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
**/\r
EFI_STATUS\r
HttpCreateTcpConnCloseEvent (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
**/\r
VOID\r
HttpCloseTcpConnCloseEvent (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
HttpCreateTcpTxEvent (\r
- IN HTTP_TOKEN_WRAP *Wrap\r
+ IN HTTP_TOKEN_WRAP *Wrap\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
HttpCreateTcpRxEventForHeader (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
**/\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
- IN HTTP_TOKEN_WRAP *Wrap\r
+ IN HTTP_TOKEN_WRAP *Wrap\r
);\r
\r
/**\r
- Intiialize the HTTP_PROTOCOL structure to the unconfigured state.\r
+ Initialize the HTTP_PROTOCOL structure to the unconfigured state.\r
\r
@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
EFI_STATUS\r
HttpInitProtocol (\r
- IN OUT HTTP_PROTOCOL *HttpInstance,\r
- IN BOOLEAN IpVersion\r
+ IN OUT HTTP_PROTOCOL *HttpInstance,\r
+ IN BOOLEAN IpVersion\r
);\r
\r
/**\r
**/\r
VOID\r
HttpCleanProtocol (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
HttpCreateConnection (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
HttpCloseConnection (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
HttpConfigureTcp4 (\r
- IN HTTP_PROTOCOL *HttpInstance,\r
- IN HTTP_TOKEN_WRAP *Wrap\r
+ IN HTTP_PROTOCOL *HttpInstance,\r
+ IN HTTP_TOKEN_WRAP *Wrap\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
HttpConfigureTcp6 (\r
- IN HTTP_PROTOCOL *HttpInstance,\r
- IN HTTP_TOKEN_WRAP *Wrap\r
+ IN HTTP_PROTOCOL *HttpInstance,\r
+ IN HTTP_TOKEN_WRAP *Wrap\r
);\r
\r
/**\r
- Check existing TCP connection, if in error state, receover TCP4 connection.\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
\r
**/\r
EFI_STATUS\r
HttpConnectTcp4 (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
- Check existing TCP connection, if in error state, recover TCP6 connection.\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
\r
**/\r
EFI_STATUS\r
HttpConnectTcp6 (\r
- IN HTTP_PROTOCOL *HttpInstance\r
+ IN HTTP_PROTOCOL *HttpInstance\r
);\r
\r
/**\r
- Send the HTTP message through TCP4 or TCP6.\r
+ Send the HTTP or HTTPS message through TCP4 or TCP6.\r
\r
@param[in] HttpInstance The HTTP instance private data.\r
@param[in] Wrap The HTTP token's wrap data.\r
IN UINTN TxStringLen\r
);\r
\r
-/**\r
- Translate the status code in HTTP message to EFI_HTTP_STATUS_CODE defined \r
- in UEFI 2.5 specification.\r
-\r
- @param[in] StatusCode The status code value in HTTP message.\r
-\r
- @return Value defined in EFI_HTTP_STATUS_CODE .\r
-\r
-**/\r
-EFI_HTTP_STATUS_CODE\r
-HttpMappingToStatusCode (\r
- IN UINTN StatusCode\r
- );\r
-\r
/**\r
Check whether the user's token or event has already\r
been enqueue on HTTP Tx or Rx Token list.\r
@param[in] Map The container of either user's transmit or receive\r
token.\r
@param[in] Item Current item to check against.\r
- @param[in] Context The Token to check againist.\r
+ @param[in] Context The Token to check against.\r
\r
@retval EFI_ACCESS_DENIED The token or event has already been enqueued in IP\r
@retval EFI_SUCCESS The current item isn't the same token/event as the\r
EFI_STATUS\r
EFIAPI\r
HttpTokenExist (\r
- IN NET_MAP *Map,\r
- IN NET_MAP_ITEM *Item,\r
- IN VOID *Context\r
+ IN NET_MAP *Map,\r
+ IN NET_MAP_ITEM *Item,\r
+ IN VOID *Context\r
);\r
\r
/**\r
\r
@param[in] Map The container of TxToken.\r
@param[in] Item Current item to check against.\r
- @param[in] Context The Token to check againist.\r
+ @param[in] Context The Token to check against.\r
\r
@retval EFI_NOT_READY The HTTP message is still queued in the list.\r
@retval EFI_SUCCESS The HTTP message has been sent out.\r
EFI_STATUS\r
EFIAPI\r
HttpTcpNotReady (\r
- IN NET_MAP *Map,\r
- IN NET_MAP_ITEM *Item,\r
- IN VOID *Context\r
+ IN NET_MAP *Map,\r
+ IN NET_MAP_ITEM *Item,\r
+ IN VOID *Context\r
);\r
\r
/**\r
- Initialize TCP related data.\r
+ Initialize Http session.\r
\r
@param[in] HttpInstance The HTTP instance private data.\r
@param[in] Wrap The HTTP token's wrap data.\r
- @param[in] Configure The Flag indicates whether the first time to initialize Tcp.\r
+ @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 TCP instance is done. \r
+ @retval EFI_SUCCESS The initialization of session is done.\r
@retval Others Other error as indicated.\r
\r
**/\r
EFI_STATUS\r
-HttpInitTcp (\r
+HttpInitSession (\r
IN HTTP_PROTOCOL *HttpInstance,\r
IN HTTP_TOKEN_WRAP *Wrap,\r
- IN BOOLEAN Configure\r
+ IN BOOLEAN Configure,\r
+ IN BOOLEAN TlsConfigure\r
);\r
\r
/**\r
- Transmit the HTTP mssage by processing the associated HTTP token.\r
+ Transmit the HTTP or HTTPS message by processing the associated HTTP token.\r
\r
@param[in] Map The container of TxToken or Tx6Token.\r
@param[in] Item Current item to check against.\r
- @param[in] Context The Token to check againist.\r
+ @param[in] Context The Token to check against.\r
\r
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources.\r
@retval EFI_SUCCESS The HTTP message is queued into TCP transmit\r
EFI_STATUS\r
EFIAPI\r
HttpTcpTransmit (\r
- IN NET_MAP *Map,\r
- IN NET_MAP_ITEM *Item,\r
- IN VOID *Context\r
+ IN NET_MAP *Map,\r
+ IN NET_MAP_ITEM *Item,\r
+ IN VOID *Context\r
);\r
\r
/**\r
\r
@param[in] Map The container of Rx4Token or Rx6Token.\r
@param[in] Item Current item to check against.\r
- @param[in] Context The Token to check againist.\r
+ @param[in] Context The Token to check against.\r
\r
@retval EFI_SUCCESS The HTTP response is queued into TCP receive\r
queue.\r
EFI_STATUS\r
EFIAPI\r
HttpTcpReceive (\r
- IN NET_MAP *Map,\r
- IN NET_MAP_ITEM *Item,\r
- IN VOID *Context\r
+ IN NET_MAP *Map,\r
+ IN NET_MAP_ITEM *Item,\r
+ IN VOID *Context\r
);\r
\r
/**\r
\r
@param[in] HttpInstance The HTTP instance private data.\r
@param[in, out] SizeofHeaders The HTTP header length.\r
- @param[in, out] BufferSize The size of buffer to cacahe the header message.\r
+ @param[in, out] BufferSize The size of buffer to cache 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
EFI_STATUS\r
HttpTcpReceiveHeader (\r
- IN HTTP_PROTOCOL *HttpInstance,\r
- IN OUT UINTN *SizeofHeaders,\r
- IN OUT UINTN *BufferSize\r
+ IN HTTP_PROTOCOL *HttpInstance,\r
+ IN OUT UINTN *SizeofHeaders,\r
+ IN OUT UINTN *BufferSize,\r
+ IN EFI_EVENT Timeout\r
);\r
\r
/**\r
@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
EFI_STATUS\r
HttpTcpReceiveBody (\r
- IN HTTP_TOKEN_WRAP *Wrap,\r
- IN EFI_HTTP_MESSAGE *HttpMsg\r
+ IN HTTP_TOKEN_WRAP *Wrap,\r
+ IN EFI_HTTP_MESSAGE *HttpMsg\r
);\r
\r
/**\r
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
- IN HTTP_TOKEN_WRAP *Wrap\r
- );\r
-\r
-/**\r
- Generate HTTP request string.\r
-\r
- @param[in] HttpInstance Pointer to HTTP_PROTOCOL structure.\r
- @param[in] Message Pointer to storage containing HTTP message data.\r
- @param[in] Url The URL of a remote host.\r
-\r
- @return Pointer to the created HTTP request string.\r
- @return NULL if any error occured.\r
-\r
-**/\r
-CHAR8 *\r
-HttpGenRequestString (\r
- IN HTTP_PROTOCOL *HttpInstance,\r
- IN EFI_HTTP_MESSAGE *Message,\r
- IN CHAR8 *Url\r
+ IN HTTP_TOKEN_WRAP *Wrap\r
);\r
\r
/**\r
@param[in] Wrap Pointer to HTTP token's wrap data.\r
\r
@retval EFI_SUCCESS Allocation succeeded.\r
- @retval EFI_OUT_OF_RESOURCES Failed to complete the opration due to lack of resources.\r
+ @retval EFI_OUT_OF_RESOURCES Failed to complete the operation due to lack of resources.\r
@retval EFI_NOT_READY Can't find a corresponding TxToken.\r
\r
**/\r
EFI_STATUS\r
HttpResponseWorker (\r
- IN HTTP_TOKEN_WRAP *Wrap\r
+ IN HTTP_TOKEN_WRAP *Wrap\r
+ );\r
+\r
+/**\r
+ Send Events via EDKII_HTTP_CALLBACK_PROTOCOL.\r
+\r
+ @param[in] Event The event that occurs in the current state.\r
+ @param[in] EventStatus The Status of Event, EFI_SUCCESS or other errors.\r
+\r
+**/\r
+VOID\r
+HttpNotify (\r
+ IN EDKII_HTTP_CALLBACK_EVENT Event,\r
+ IN EFI_STATUS EventStatus\r
);\r
\r
#endif\r