MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / TlsCommonTransmit

Function TlsCommonTransmit

NetworkPkg/HttpDxe/HttpsSupport.c:712–814  ·  view source on GitHub ↗

Transmit the Packet by processing the associated HTTPS token. @param[in, out] HttpInstance Pointer to HTTP_PROTOCOL structure. @param[in] Packet The packet to transmit. @retval EFI_SUCCESS The packet is transmitted. @retval EFI_INVALID_PARAMETER HttpInstance is NULL or Packet is NULL. @retval EFI_OUT_OF_RESOURCES Can't allocate memory resources

Source from the content-addressed store, hash-verified

710
711**/
712EFI_STATUS
713EFIAPI
714TlsCommonTransmit (
715 IN OUT HTTP_PROTOCOL *HttpInstance,
716 IN NET_BUF *Packet
717 )
718{
719 EFI_STATUS Status;
720 VOID *Data;
721 UINTN Size;
722
723 if ((HttpInstance == NULL) || (Packet == NULL)) {
724 return EFI_INVALID_PARAMETER;
725 }
726
727 if (!HttpInstance->LocalAddressIsIPv6) {
728 Size = sizeof (EFI_TCP4_TRANSMIT_DATA) +
729 (Packet->BlockOpNum - 1) * sizeof (EFI_TCP4_FRAGMENT_DATA);
730 } else {
731 Size = sizeof (EFI_TCP6_TRANSMIT_DATA) +
732 (Packet->BlockOpNum - 1) * sizeof (EFI_TCP6_FRAGMENT_DATA);
733 }
734
735 Data = AllocatePool (Size);
736 if (Data == NULL) {
737 return EFI_OUT_OF_RESOURCES;
738 }
739
740 if (!HttpInstance->LocalAddressIsIPv6) {
741 ((EFI_TCP4_TRANSMIT_DATA *) Data)->Push = TRUE;
742 ((EFI_TCP4_TRANSMIT_DATA *) Data)->Urgent = FALSE;
743 ((EFI_TCP4_TRANSMIT_DATA *) Data)->DataLength = Packet->TotalSize;
744
745 //
746 // Build the fragment table.
747 //
748 ((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount = Packet->BlockOpNum;
749
750 NetbufBuildExt (
751 Packet,
752 (NET_FRAGMENT *) &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentTable[0],
753 &((EFI_TCP4_TRANSMIT_DATA *) Data)->FragmentCount
754 );
755
756 HttpInstance->Tcp4TlsTxToken.Packet.TxData = (EFI_TCP4_TRANSMIT_DATA *) Data;
757
758 Status = EFI_DEVICE_ERROR;
759
760 //
761 // Transmit the packet.
762 //
763 Status = HttpInstance->Tcp4->Transmit (HttpInstance->Tcp4, &HttpInstance->Tcp4TlsTxToken);
764 if (EFI_ERROR (Status)) {
765 goto ON_EXIT;
766 }
767
768 while (!HttpInstance->TlsIsTxDone) {
769 HttpInstance->Tcp4->Poll (HttpInstance->Tcp4);

Callers 3

TlsConnectSessionFunction · 0.85
TlsCloseSessionFunction · 0.85
HttpsReceiveFunction · 0.85

Calls 3

AllocatePoolFunction · 0.50
NetbufBuildExtFunction · 0.50
FreePoolFunction · 0.50

Tested by

no test coverage detected