Check existing TCP connection, if in error state, recover TCP4 connection. Then, connect one TLS session if required. @param[in] HttpInstance The HTTP instance private data. @retval EFI_SUCCESS The TCP connection is established. @retval EFI_NOT_READY TCP4 protocol child is not created or configured. @retval Others Other error as indicat
| 1208 | |
| 1209 | **/ |
| 1210 | EFI_STATUS |
| 1211 | HttpConnectTcp4 ( |
| 1212 | IN HTTP_PROTOCOL *HttpInstance |
| 1213 | ) |
| 1214 | { |
| 1215 | EFI_STATUS Status; |
| 1216 | EFI_TCP4_CONNECTION_STATE Tcp4State; |
| 1217 | |
| 1218 | |
| 1219 | if (HttpInstance->State < HTTP_STATE_TCP_CONFIGED || HttpInstance->Tcp4 == NULL) { |
| 1220 | return EFI_NOT_READY; |
| 1221 | } |
| 1222 | |
| 1223 | Status = HttpInstance->Tcp4->GetModeData( |
| 1224 | HttpInstance->Tcp4, |
| 1225 | &Tcp4State, |
| 1226 | NULL, |
| 1227 | NULL, |
| 1228 | NULL, |
| 1229 | NULL |
| 1230 | ); |
| 1231 | if (EFI_ERROR(Status)){ |
| 1232 | DEBUG ((EFI_D_ERROR, "Tcp4 GetModeData fail - %x\n", Status)); |
| 1233 | return Status; |
| 1234 | } |
| 1235 | |
| 1236 | if (Tcp4State == Tcp4StateEstablished) { |
| 1237 | return EFI_SUCCESS; |
| 1238 | } else if (Tcp4State > Tcp4StateEstablished ) { |
| 1239 | HttpCloseConnection(HttpInstance); |
| 1240 | } |
| 1241 | |
| 1242 | Status = HttpCreateConnection (HttpInstance); |
| 1243 | if (EFI_ERROR(Status)){ |
| 1244 | DEBUG ((EFI_D_ERROR, "Tcp4 Connection fail - %x\n", Status)); |
| 1245 | return Status; |
| 1246 | } |
| 1247 | |
| 1248 | // |
| 1249 | // Tls session connection. |
| 1250 | // |
| 1251 | if (HttpInstance->UseHttps) { |
| 1252 | if (HttpInstance->TimeoutEvent == NULL) { |
| 1253 | // |
| 1254 | // Create TimeoutEvent for TLS connection. |
| 1255 | // |
| 1256 | Status = gBS->CreateEvent ( |
| 1257 | EVT_TIMER, |
| 1258 | TPL_CALLBACK, |
| 1259 | NULL, |
| 1260 | NULL, |
| 1261 | &HttpInstance->TimeoutEvent |
| 1262 | ); |
| 1263 | if (EFI_ERROR (Status)) { |
| 1264 | TlsCloseTxRxEvent (HttpInstance); |
| 1265 | return Status; |
| 1266 | } |
| 1267 | } |
no test coverage detected