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
| 710 | |
| 711 | **/ |
| 712 | EFI_STATUS |
| 713 | EFIAPI |
| 714 | TlsCommonTransmit ( |
| 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); |
no test coverage detected