58 if ((This ==
NULL) || (HttpConfigData ==
NULL)) {
59 return EFI_INVALID_PARAMETER;
62 HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (This);
64 if ((HttpConfigData->AccessPoint.IPv6Node ==
NULL) ||
65 (HttpConfigData->AccessPoint.IPv4Node ==
NULL))
67 return EFI_INVALID_PARAMETER;
70 if (HttpInstance->State < HTTP_STATE_HTTP_CONFIGED) {
71 return EFI_NOT_STARTED;
74 HttpConfigData->HttpVersion = HttpInstance->HttpVersion;
75 HttpConfigData->TimeOutMillisec = HttpInstance->TimeOutMillisec;
76 HttpConfigData->LocalAddressIsIPv6 = HttpInstance->LocalAddressIsIPv6;
78 if (HttpInstance->LocalAddressIsIPv6) {
80 HttpConfigData->AccessPoint.IPv6Node,
81 &HttpInstance->Ipv6Node,
82 sizeof (HttpInstance->Ipv6Node)
86 HttpConfigData->AccessPoint.IPv4Node,
87 &HttpInstance->IPv4Node,
88 sizeof (HttpInstance->IPv4Node)
139 if ((This ==
NULL) ||
140 ((HttpConfigData !=
NULL) &&
141 ((HttpConfigData->LocalAddressIsIPv6 && (HttpConfigData->AccessPoint.IPv6Node ==
NULL)) ||
142 (!HttpConfigData->LocalAddressIsIPv6 && (HttpConfigData->AccessPoint.IPv4Node ==
NULL)))))
144 return EFI_INVALID_PARAMETER;
147 HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (This);
148 ASSERT (HttpInstance->Service !=
NULL);
150 if (HttpConfigData !=
NULL) {
151 if (HttpConfigData->HttpVersion >= HttpVersionUnsupported) {
152 return EFI_UNSUPPORTED;
158 if (HttpInstance->State != HTTP_STATE_UNCONFIGED) {
159 return EFI_ALREADY_STARTED;
162 HttpInstance->HttpVersion = HttpConfigData->HttpVersion;
163 HttpInstance->TimeOutMillisec = HttpConfigData->TimeOutMillisec;
164 HttpInstance->LocalAddressIsIPv6 = HttpConfigData->LocalAddressIsIPv6;
165 HttpInstance->ConnectionClose =
FALSE;
167 if (HttpConfigData->LocalAddressIsIPv6) {
169 &HttpInstance->Ipv6Node,
170 HttpConfigData->AccessPoint.IPv6Node,
171 sizeof (HttpInstance->Ipv6Node)
175 &HttpInstance->IPv4Node,
176 HttpConfigData->AccessPoint.IPv4Node,
177 sizeof (HttpInstance->IPv4Node)
185 if (EFI_ERROR (Status)) {
189 HttpInstance->State = HTTP_STATE_HTTP_CONFIGED;
196 HttpInstance->State = HTTP_STATE_UNCONFIGED;
244 BOOLEAN TlsConfigure;
251 UINTN RequestMsgSize;
264 TlsConfigure =
FALSE;
266 if ((This ==
NULL) || (Token ==
NULL)) {
267 return EFI_INVALID_PARAMETER;
270 HttpMsg = Token->Message;
271 if (HttpMsg ==
NULL) {
272 return EFI_INVALID_PARAMETER;
280 if ((Request !=
NULL) && (Request->
Method != HttpMethodGet) &&
281 (Request->
Method != HttpMethodHead) && (Request->
Method != HttpMethodDelete) &&
282 (Request->
Method != HttpMethodPut) && (Request->
Method != HttpMethodPost) &&
283 (Request->
Method != HttpMethodPatch))
285 return EFI_UNSUPPORTED;
288 HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (This);
293 if (Request !=
NULL) {
294 HttpInstance->Method = Request->
Method;
297 if (HttpInstance->State < HTTP_STATE_HTTP_CONFIGED) {
298 return EFI_NOT_STARTED;
301 if (Request ==
NULL) {
305 if ((HttpInstance->Method != HttpMethodPut) &&
306 (HttpInstance->Method != HttpMethodPost) &&
307 (HttpInstance->Method != HttpMethodPatch))
309 return EFI_INVALID_PARAMETER;
315 if (HttpInstance->State < HTTP_STATE_TCP_CONFIGED) {
316 return EFI_INVALID_PARAMETER;
323 return EFI_INVALID_PARAMETER;
336 return EFI_ACCESS_DENIED;
342 Url = HttpInstance->Url;
344 if (UrlLen > HttpInstance->UrlLen) {
347 return EFI_OUT_OF_RESOURCES;
350 if (HttpInstance->Url !=
NULL) {
354 HttpInstance->Url = Url;
355 HttpInstance->UrlLen = UrlLen;
369 if (!
PcdGetBool (PcdAllowHttpConnections) && !(HttpInstance->UseHttps)) {
370 DEBUG ((DEBUG_ERROR,
"EfiHttpRequest: HTTP is disabled.\n"));
372 return EFI_ACCESS_DENIED;
378 if (HttpInstance->UseHttps && !HttpInstance->TlsAlreadyCreated) {
381 if (EFI_ERROR (Status)) {
382 return EFI_DEVICE_ERROR;
390 if (EFI_ERROR (Status)) {
395 if (EFI_ERROR (Status)) {
399 if (HttpInstance->LocalAddressIsIPv6) {
402 if ((HostNameSize > 2) && (HostName[0] ==
'[') && (HostName[HostNameSize - 2] ==
']')) {
407 CopyMem (HostName, HostName + 1, HostNameSize - 1);
408 HostName[HostNameSize - 1] =
'\0';
413 if (EFI_ERROR (Status)) {
414 if (HttpInstance->UseHttps) {
415 RemotePort = HTTPS_DEFAULT_PORT;
417 RemotePort = HTTP_DEFAULT_PORT;
429 if (HttpInstance->RemoteHost ==
NULL) {
435 if ((HttpInstance->ConnectionClose ==
FALSE) &&
436 (HttpInstance->RemotePort == RemotePort) &&
437 (
AsciiStrCmp (HttpInstance->RemoteHost, HostName) == 0) &&
438 (!HttpInstance->UseHttps || (HttpInstance->UseHttps &&
454 Status = EFI_OUT_OF_RESOURCES;
458 Wrap->HttpToken = Token;
459 Wrap->HttpInstance = HttpInstance;
462 if (EFI_ERROR (Status)) {
467 if (EFI_ERROR (Status)) {
471 Wrap->TcpWrap.Method = Request->
Method;
492 if (HttpInstance->RemoteHost !=
NULL) {
493 FreePool (HttpInstance->RemoteHost);
494 HttpInstance->RemoteHost =
NULL;
495 HttpInstance->RemotePort = 0;
505 if (!HttpInstance->LocalAddressIsIPv6) {
508 Status =
HttpUrlGetIp6 (Url, UrlParser, &HttpInstance->RemoteIpv6Addr);
511 if (EFI_ERROR (Status)) {
514 if (HostNameStr ==
NULL) {
515 Status = EFI_OUT_OF_RESOURCES;
520 if (!HttpInstance->LocalAddressIsIPv6) {
521 Status =
HttpDns4 (HttpInstance, HostNameStr, &HttpInstance->RemoteAddr);
523 Status =
HttpDns6 (HttpInstance, HostNameStr, &HttpInstance->RemoteIpv6Addr);
529 if (EFI_ERROR (Status)) {
530 DEBUG ((DEBUG_ERROR,
"Error: Could not retrieve the host address from DNS server.\n"));
538 ASSERT (HttpInstance->RemoteHost ==
NULL);
539 HttpInstance->RemotePort = RemotePort;
540 HttpInstance->RemoteHost = HostName;
548 if (!HttpInstance->LocalAddressIsIPv6) {
549 ASSERT (HttpInstance->Tcp4 !=
NULL);
551 ASSERT (HttpInstance->Tcp6 !=
NULL);
554 if (HttpInstance->UseHttps && !TlsConfigure) {
556 if (EFI_ERROR (Status)) {
572 Status = EFI_OUT_OF_RESOURCES;
576 Wrap->HttpToken = Token;
577 Wrap->HttpInstance = HttpInstance;
578 if (Request !=
NULL) {
579 Wrap->TcpWrap.Method = Request->
Method;
585 Configure || ReConfigure,
589 if (EFI_ERROR (Status)) {
593 if (!Configure && !ReConfigure && !TlsConfigure) {
598 if (EFI_ERROR (Status)) {
607 if ((Url !=
NULL) && (*FileUrl !=
'/')) {
611 while (*FileUrl !=
':') {
615 if ((*(FileUrl+1) ==
'/') && (*(FileUrl+2) ==
'/')) {
617 while (*FileUrl !=
'/') {
621 Status = EFI_INVALID_PARAMETER;
628 if (EFI_ERROR (Status) || (
NULL == RequestMsg)) {
638 if (Request !=
NULL) {
640 if (EFI_ERROR (Status)) {
645 HttpInstance->ConnectionClose =
FALSE;
656 if (EFI_ERROR (Status)) {
662 if (HostName !=
NULL) {
666 if (UrlParser !=
NULL) {
677 if (Request !=
NULL) {
682 if (RequestMsg !=
NULL) {
687 if (HttpInstance->UseHttps) {
707 if (HostName !=
NULL) {
715 if (UrlParser !=
NULL) {
751 if ((Token !=
NULL) && (Token != Item->Key)) {
756 ASSERT (Wrap !=
NULL);
757 HttpInstance = Wrap->HttpInstance;
759 if (!HttpInstance->LocalAddressIsIPv6) {
764 HttpInstance->Tcp4->Cancel (HttpInstance->Tcp4, &Wrap->TcpWrap.Rx4Token.
CompletionToken);
776 HttpInstance->Tcp6->Cancel (HttpInstance->Tcp6, &Wrap->TcpWrap.Rx6Token.
CompletionToken);
822 if (EFI_ERROR (Status)) {
824 if (Status == EFI_ABORTED) {
832 if (!HttpInstance->UseHttps) {
837 if (EFI_ERROR (Status)) {
839 if (Status == EFI_ABORTED) {
842 return EFI_NOT_FOUND;
849 if (!HttpInstance->LocalAddressIsIPv6) {
850 HttpInstance->Tcp4->Cancel (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsRxToken.CompletionToken);
852 HttpInstance->Tcp6->Cancel (HttpInstance->Tcp6, &HttpInstance->Tcp6TlsRxToken.CompletionToken);
891 return EFI_INVALID_PARAMETER;
894 HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (This);
896 if (HttpInstance->State != HTTP_STATE_TCP_CONNECTED) {
897 return EFI_NOT_STARTED;
920 IN HTTP_BODY_PARSE_EVENT EventType,
931 if (EventType != BodyParseEventOnComplete) {
935 if ((Data ==
NULL) || (Length != 0) || (Context ==
NULL)) {
942 Body = CallbackData->ParseData;
943 BodyLength = CallbackData->ParseDataLength;
945 if (Data < Body + BodyLength) {
946 Wrap->HttpInstance->NextMsg = Data;
948 Wrap->HttpInstance->NextMsg =
NULL;
979 CHAR8 *StatusCodeStr;
990 if ((Wrap ==
NULL) || (Wrap->HttpInstance ==
NULL)) {
991 return EFI_INVALID_PARAMETER;
994 HttpInstance = Wrap->HttpInstance;
995 Token = Wrap->HttpToken;
998 HttpInstance->EndofHeader =
NULL;
999 HttpInstance->HttpHeaders =
NULL;
1007 Fragment.Bulk =
NULL;
1013 if ((HttpInstance->CacheBody !=
NULL) && (HttpInstance->NextMsg !=
NULL)) {
1017 HdrLen = HttpInstance->CacheBody + HttpInstance->CacheLen - HttpInstance->NextMsg;
1019 if (HttpHeaders ==
NULL) {
1020 Status = EFI_OUT_OF_RESOURCES;
1024 CopyMem (HttpHeaders, HttpInstance->NextMsg, HdrLen);
1025 FreePool (HttpInstance->CacheBody);
1026 HttpInstance->CacheBody =
NULL;
1027 HttpInstance->NextMsg =
NULL;
1028 HttpInstance->CacheOffset = 0;
1029 SizeofHeaders = HdrLen;
1030 BufferSize = HttpInstance->CacheLen;
1035 EndofHeader =
AsciiStrStr (HttpHeaders, HTTP_END_OF_HDR_STR);
1038 HttpInstance->EndofHeader = &EndofHeader;
1039 HttpInstance->HttpHeaders = &HttpHeaders;
1041 if (HttpInstance->TimeoutEvent ==
NULL) {
1045 Status =
gBS->CreateEvent (
1050 &HttpInstance->TimeoutEvent
1052 if (EFI_ERROR (Status)) {
1060 TimeoutValue =
PcdGet32 (PcdHttpIoTimeout);
1065 Status =
gBS->SetTimer (HttpInstance->TimeoutEvent,
TimerRelative, TimeoutValue * TICKS_PER_MS);
1066 if (EFI_ERROR (Status)) {
1070 Status =
HttpTcpReceiveHeader (HttpInstance, &SizeofHeaders, &BufferSize, HttpInstance->TimeoutEvent);
1074 if (EFI_ERROR (Status)) {
1078 ASSERT (HttpHeaders !=
NULL);
1083 BodyLen = BufferSize - (EndofHeader - HttpHeaders);
1085 if (HttpInstance->CacheBody !=
NULL) {
1086 FreePool (HttpInstance->CacheBody);
1090 if (HttpInstance->CacheBody ==
NULL) {
1091 Status = EFI_OUT_OF_RESOURCES;
1095 CopyMem (HttpInstance->CacheBody, EndofHeader, BodyLen);
1096 HttpInstance->CacheLen = BodyLen;
1102 if (
AsciiStrnCmp (HttpHeaders,
"HTTP/1.0",
sizeof (
"HTTP/1.0") - 1) == 0) {
1103 DEBUG ((DEBUG_VERBOSE,
"HTTP: Server version is 1.0. Setting Connection close.\n"));
1104 HttpInstance->ConnectionClose =
TRUE;
1110 StatusCodeStr = HttpHeaders +
AsciiStrLen (HTTP_VERSION_STR) + 1;
1111 if (StatusCodeStr ==
NULL) {
1112 Status = EFI_NOT_READY;
1123 Status = EFI_NOT_READY;
1137 SizeofHeaders = SizeofHeaders - (Tmp - HttpHeaders);
1141 HttpInstance->StatusCode = StatusCode;
1143 Status = EFI_NOT_READY;
1155 if (ValueInItem ==
NULL) {
1162 if (!ValueInItem->TcpWrap.IsTxDone) {
1167 if (SizeofHeaders != 0) {
1169 if (HeaderTmp ==
NULL) {
1170 Status = EFI_OUT_OF_RESOURCES;
1174 CopyMem (HeaderTmp, Tmp, SizeofHeaders);
1176 HttpHeaders = HeaderTmp;
1181 if (mHttpUtilities ==
NULL) {
1182 Status = EFI_NOT_READY;
1189 Status = mHttpUtilities->Parse (
1196 if (EFI_ERROR (Status)) {
1203 for (Index = 0; Index < HttpMsg->
HeaderCount; ++Index) {
1207 DEBUG ((DEBUG_VERBOSE,
"Http: 'Connection: close' header received.\n"));
1208 HttpInstance->ConnectionClose =
TRUE;
1217 HttpInstance->Method,
1222 (VOID *)(&HttpInstance->CallbackData),
1223 &HttpInstance->MsgParser
1225 if (EFI_ERROR (Status)) {
1232 if (HttpInstance->CacheBody !=
NULL) {
1236 HttpInstance->CallbackData.Wrap = (VOID *)Wrap;
1237 HttpInstance->CallbackData.ParseData = (VOID *)HttpInstance->CacheBody;
1238 HttpInstance->CallbackData.ParseDataLength = HttpInstance->CacheLen;
1243 Status =
HttpParseMessageBody (HttpInstance->MsgParser, HttpInstance->CacheLen, HttpInstance->CacheBody);
1244 if (EFI_ERROR (Status)) {
1254 HttpInstance->MsgParser =
NULL;
1272 if (HttpInstance->CacheBody !=
NULL) {
1276 if (HttpInstance->NextMsg !=
NULL) {
1280 BodyLen = HttpInstance->NextMsg - (HttpInstance->CacheBody + HttpInstance->CacheOffset);
1282 BodyLen = HttpInstance->CacheLen - HttpInstance->CacheOffset;
1291 HttpInstance->CacheOffset = HttpInstance->CacheOffset + HttpMsg->
BodyLength;
1296 CopyMem (HttpMsg->
Body, HttpInstance->CacheBody + HttpInstance->CacheOffset, BodyLen);
1297 HttpInstance->CacheOffset = BodyLen + HttpInstance->CacheOffset;
1300 if (HttpInstance->NextMsg ==
NULL) {
1304 FreePool (HttpInstance->CacheBody);
1305 HttpInstance->CacheBody =
NULL;
1306 HttpInstance->NextMsg =
NULL;
1307 HttpInstance->CacheOffset = 0;
1318 if ((BodyLen == 0) && (HttpInstance->MsgParser ==
NULL)) {
1328 ASSERT (HttpInstance->MsgParser !=
NULL);
1333 if (!HttpInstance->UseHttps) {
1336 if (EFI_ERROR (Status)) {
1340 if (HttpInstance->TimeoutEvent ==
NULL) {
1344 Status =
gBS->CreateEvent (
1349 &HttpInstance->TimeoutEvent
1351 if (EFI_ERROR (Status)) {
1359 TimeoutValue =
PcdGet32 (PcdHttpIoTimeout);
1364 Status =
gBS->SetTimer (HttpInstance->TimeoutEvent,
TimerRelative, TimeoutValue * TICKS_PER_MS);
1365 if (EFI_ERROR (Status)) {
1369 Status =
HttpsReceive (HttpInstance, &Fragment, HttpInstance->TimeoutEvent);
1373 if (EFI_ERROR (Status)) {
1387 HttpInstance->CallbackData.Wrap = (VOID *)Wrap;
1388 HttpInstance->CallbackData.ParseData = HttpMsg->
Body;
1389 HttpInstance->CallbackData.ParseDataLength = HttpMsg->
BodyLength;
1395 HttpInstance->MsgParser,
1399 if (EFI_ERROR (Status)) {
1408 HttpInstance->MsgParser =
NULL;
1414 if (HttpInstance->NextMsg !=
NULL) {
1415 HttpMsg->
BodyLength = HttpInstance->NextMsg - (CHAR8 *)HttpMsg->
Body;
1418 HttpInstance->CacheLen = Fragment.Len - HttpMsg->
BodyLength;
1419 if (HttpInstance->CacheLen != 0) {
1420 if (HttpInstance->CacheBody !=
NULL) {
1421 FreePool (HttpInstance->CacheBody);
1425 if (HttpInstance->CacheBody ==
NULL) {
1426 Status = EFI_OUT_OF_RESOURCES;
1430 CopyMem (HttpInstance->CacheBody, Fragment.Bulk + HttpMsg->
BodyLength, HttpInstance->CacheLen);
1431 HttpInstance->CacheOffset = 0;
1432 if (HttpInstance->NextMsg !=
NULL) {
1433 HttpInstance->NextMsg = HttpInstance->CacheBody;
1437 if (Fragment.Bulk !=
NULL) {
1439 Fragment.Bulk =
NULL;
1448 Item =
NetMapFindKey (&Wrap->HttpInstance->RxTokens, Wrap->HttpToken);
1453 if (HttpInstance->StatusCode >= HTTP_ERROR_OR_NOT_SUPPORT_STATUS_CODE) {
1454 Token->
Status = EFI_HTTP_ERROR;
1465 if (ValueInItem !=
NULL) {
1466 NetMapInsertHead (&HttpInstance->TxTokens, ValueInItem->HttpToken, ValueInItem);
1470 Item =
NetMapFindKey (&Wrap->HttpInstance->RxTokens, Wrap->HttpToken);
1475 if (!HttpInstance->UseHttps) {
1481 if (HttpHeaders !=
NULL) {
1486 if (Fragment.Bulk !=
NULL) {
1488 Fragment.Bulk =
NULL;
1496 if (HttpInstance->CacheBody !=
NULL) {
1497 FreePool (HttpInstance->CacheBody);
1498 HttpInstance->CacheBody =
NULL;
1501 if (HttpInstance->StatusCode >= HTTP_ERROR_OR_NOT_SUPPORT_STATUS_CODE) {
1502 Token->
Status = EFI_HTTP_ERROR;
1571 if ((This ==
NULL) || (Token ==
NULL)) {
1572 return EFI_INVALID_PARAMETER;
1575 HttpMsg = Token->Message;
1576 if (HttpMsg ==
NULL) {
1577 return EFI_INVALID_PARAMETER;
1580 HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (This);
1582 if (HttpInstance->State != HTTP_STATE_TCP_CONNECTED) {
1583 return EFI_NOT_STARTED;
1590 return EFI_ACCESS_DENIED;
1595 return EFI_OUT_OF_RESOURCES;
1598 Wrap->HttpInstance = HttpInstance;
1599 Wrap->HttpToken = Token;
1606 if (!HttpInstance->UseHttps) {
1608 if (EFI_ERROR (Status)) {
1614 if (EFI_ERROR (Status)) {
1673 return EFI_INVALID_PARAMETER;
1676 HttpInstance = HTTP_INSTANCE_FROM_PROTOCOL (This);
1678 if (HttpInstance->State != HTTP_STATE_TCP_CONNECTED) {
1679 return EFI_NOT_STARTED;
1682 if (HttpInstance->LocalAddressIsIPv6) {
1683 if (HttpInstance->Tcp6 ==
NULL) {
1684 return EFI_NOT_STARTED;
1687 Status = HttpInstance->Tcp6->Poll (HttpInstance->Tcp6);
1689 if (HttpInstance->Tcp4 ==
NULL) {
1690 return EFI_NOT_STARTED;
1693 Status = HttpInstance->Tcp4->Poll (HttpInstance->Tcp4);
INTN EFIAPI AsciiStriCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString)
UINTN EFIAPI AsciiStrLen(IN CONST CHAR8 *String)
INTN EFIAPI AsciiStrCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString)
INTN EFIAPI AsciiStrnCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString, IN UINTN Length)
RETURN_STATUS EFIAPI UnicodeStrToAsciiStrS(IN CONST CHAR16 *Source, OUT CHAR8 *Destination, IN UINTN DestMax)
UINTN EFIAPI AsciiStrDecimalToUintn(IN CONST CHAR8 *String)
RETURN_STATUS EFIAPI AsciiStrToUnicodeStrS(IN CONST CHAR8 *Source, OUT CHAR16 *Destination, IN UINTN DestMax)
UINTN EFIAPI AsciiStrSize(IN CONST CHAR8 *String)
UINTN EFIAPI StrLen(IN CONST CHAR16 *String)
CHAR8 *EFIAPI AsciiStrStr(IN CONST CHAR8 *String, IN CONST CHAR8 *SearchString)
INTN EFIAPI CompareMem(IN CONST VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
EFI_STATUS EFIAPI DispatchDpc(VOID)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
EFI_STATUS HttpDns4(IN HTTP_PROTOCOL *HttpInstance, IN CHAR16 *HostName, OUT EFI_IPv4_ADDRESS *IpAddress)
EFI_STATUS HttpDns6(IN HTTP_PROTOCOL *HttpInstance, IN CHAR16 *HostName, OUT EFI_IPv6_ADDRESS *IpAddress)
EFI_STATUS EFIAPI EfiHttpConfigure(IN EFI_HTTP_PROTOCOL *This, IN EFI_HTTP_CONFIG_DATA *HttpConfigData OPTIONAL)
EFI_STATUS EFIAPI EfiHttpGetModeData(IN EFI_HTTP_PROTOCOL *This, OUT EFI_HTTP_CONFIG_DATA *HttpConfigData)
EFI_STATUS EFIAPI EfiHttpCancel(IN EFI_HTTP_PROTOCOL *This, IN EFI_HTTP_TOKEN *Token)
EFI_STATUS HttpResponseWorker(IN HTTP_TOKEN_WRAP *Wrap)
EFI_STATUS EFIAPI HttpCancelTokens(IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Context)
EFI_STATUS EFIAPI EfiHttpResponse(IN EFI_HTTP_PROTOCOL *This, IN EFI_HTTP_TOKEN *Token)
EFI_STATUS EFIAPI EfiHttpPoll(IN EFI_HTTP_PROTOCOL *This)
EFI_STATUS EFIAPI EfiHttpRequest(IN EFI_HTTP_PROTOCOL *This, IN EFI_HTTP_TOKEN *Token)
EFI_STATUS HttpCancel(IN HTTP_PROTOCOL *HttpInstance, IN EFI_HTTP_TOKEN *Token)
EFI_STATUS EFIAPI HttpBodyParserCallback(IN HTTP_BODY_PARSE_EVENT EventType, IN CHAR8 *Data, IN UINTN Length, IN VOID *Context)
EFI_STATUS EFIAPI HttpUrlGetHostName(IN CHAR8 *Url, IN VOID *UrlParser, OUT CHAR8 **HostName)
EFI_STATUS EFIAPI HttpInitMsgParser(IN EFI_HTTP_METHOD Method, IN EFI_HTTP_STATUS_CODE StatusCode, IN UINTN HeaderCount, IN EFI_HTTP_HEADER *Headers, IN HTTP_BODY_PARSER_CALLBACK Callback, IN VOID *Context, OUT VOID **MsgParser)
EFI_STATUS EFIAPI HttpUrlGetPort(IN CHAR8 *Url, IN VOID *UrlParser, OUT UINT16 *Port)
EFI_STATUS EFIAPI HttpUrlGetIp6(IN CHAR8 *Url, IN VOID *UrlParser, OUT EFI_IPv6_ADDRESS *Ip6Address)
EFI_STATUS EFIAPI HttpGenRequestMessage(IN CONST EFI_HTTP_MESSAGE *Message, IN CONST CHAR8 *Url, OUT CHAR8 **RequestMsg, OUT UINTN *RequestMsgSize)
EFI_STATUS EFIAPI HttpParseMessageBody(IN OUT VOID *MsgParser, IN UINTN BodyLength, IN CHAR8 *Body)
VOID EFIAPI HttpFreeMsgParser(IN VOID *MsgParser)
VOID EFIAPI HttpUrlFreeParser(IN VOID *UrlParser)
EFI_STATUS EFIAPI HttpParseUrl(IN CHAR8 *Url, IN UINT32 Length, IN BOOLEAN IsConnectMethod, OUT VOID **UrlParser)
BOOLEAN EFIAPI HttpIsMessageComplete(IN VOID *MsgParser)
EFI_HTTP_STATUS_CODE EFIAPI HttpMappingToStatusCode(IN UINTN StatusCode)
VOID HttpTcpTokenCleanup(IN HTTP_TOKEN_WRAP *Wrap)
EFI_STATUS HttpCreateTcpRxEvent(IN HTTP_TOKEN_WRAP *Wrap)
EFI_STATUS HttpInitSession(IN HTTP_PROTOCOL *HttpInstance, IN HTTP_TOKEN_WRAP *Wrap, IN BOOLEAN Configure, IN BOOLEAN TlsConfigure)
EFI_STATUS EFIAPI HttpTokenExist(IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Context)
EFI_STATUS HttpInitProtocol(IN OUT HTTP_PROTOCOL *HttpInstance, IN BOOLEAN IpVersion)
VOID HttpCleanProtocol(IN HTTP_PROTOCOL *HttpInstance)
EFI_STATUS HttpTcpReceiveBody(IN HTTP_TOKEN_WRAP *Wrap, IN EFI_HTTP_MESSAGE *HttpMsg)
EFI_STATUS HttpCloseConnection(IN HTTP_PROTOCOL *HttpInstance)
VOID HttpNotify(IN EDKII_HTTP_CALLBACK_EVENT Event, IN EFI_STATUS EventStatus)
EFI_STATUS HttpTransmitTcp(IN HTTP_PROTOCOL *HttpInstance, IN HTTP_TOKEN_WRAP *Wrap, IN UINT8 *TxString, IN UINTN TxStringLen)
EFI_STATUS HttpTcpReceiveHeader(IN HTTP_PROTOCOL *HttpInstance, IN OUT UINTN *SizeofHeaders, IN OUT UINTN *BufferSize, IN EFI_EVENT Timeout)
EFI_STATUS EFIAPI HttpTcpNotReady(IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Context)
VOID HttpCloseTcpConnCloseEvent(IN HTTP_PROTOCOL *HttpInstance)
EFI_STATUS HttpCreateTcpTxEvent(IN HTTP_TOKEN_WRAP *Wrap)
VOID HttpCloseTcpRxEvent(IN HTTP_TOKEN_WRAP *Wrap)
EFI_STATUS EFIAPI HttpsReceive(IN HTTP_PROTOCOL *HttpInstance, IN OUT NET_FRAGMENT *Fragment, IN EFI_EVENT Timeout)
EFI_STATUS EFIAPI TlsCreateChild(IN HTTP_PROTOCOL *HttpInstance)
BOOLEAN IsHttpsUrl(IN CHAR8 *Url)
VOID EFIAPI TlsCloseTxRxEvent(IN HTTP_PROTOCOL *HttpInstance)
EFI_STATUS EFIAPI TlsCloseSession(IN HTTP_PROTOCOL *HttpInstance)
#define DEBUG(Expression)
VOID *EFIAPI NetMapRemoveTail(IN OUT NET_MAP *Map, OUT VOID **Value OPTIONAL)
EFI_STATUS EFIAPI NetLibAsciiStrToIp4(IN CONST CHAR8 *String, OUT EFI_IPv4_ADDRESS *Ip4Address)
NET_MAP_ITEM *EFIAPI NetMapFindKey(IN NET_MAP *Map, IN VOID *Key)
EFI_STATUS EFIAPI NetMapInsertHead(IN OUT NET_MAP *Map, IN VOID *Key, IN VOID *Value OPTIONAL)
BOOLEAN EFIAPI NetMapIsEmpty(IN NET_MAP *Map)
VOID *EFIAPI NetMapRemoveItem(IN OUT NET_MAP *Map, IN OUT NET_MAP_ITEM *Item, OUT VOID **Value OPTIONAL)
VOID *EFIAPI NetMapRemoveHead(IN OUT NET_MAP *Map, OUT VOID **Value OPTIONAL)
EFI_STATUS EFIAPI NetMapInsertTail(IN OUT NET_MAP *Map, IN VOID *Key, IN VOID *Value OPTIONAL)
EFI_STATUS EFIAPI NetMapIterate(IN NET_MAP *Map, IN NET_MAP_CALLBACK CallBack, IN VOID *Arg OPTIONAL)
UINTN EFIAPI NetMapGetCount(IN NET_MAP *Map)
#define PcdGet32(TokenName)
#define PcdGetBool(TokenName)
@ EfiTlsSessionDataTransferring
VOID EFIAPI Exit(IN EFI_STATUS Status)
EFI_HTTP_HEADER * Headers
union EFI_HTTP_MESSAGE::@577 Data
EFI_HTTP_RESPONSE_DATA * Response
EFI_HTTP_REQUEST_DATA * Request
EFI_HTTP_STATUS_CODE StatusCode
EFI_HTTP_MESSAGE * Message
EFI_TCP4_COMPLETION_TOKEN CompletionToken
EFI_TCP6_COMPLETION_TOKEN CompletionToken