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

Function HttpConnectTcp4

NetworkPkg/HttpDxe/HttpProto.c:1210–1289  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

1208
1209**/
1210EFI_STATUS
1211HttpConnectTcp4 (
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 }

Callers 1

HttpInitSessionFunction · 0.85

Calls 4

HttpCloseConnectionFunction · 0.85
HttpCreateConnectionFunction · 0.85
TlsCloseTxRxEventFunction · 0.85
TlsConnectSessionFunction · 0.85

Tested by

no test coverage detected