//\r
NetZeroMem (&OpenData, sizeof (IP_IO_OPEN_DATA));\r
\r
- CopyMem (&OpenData.IpConfigData, &mIpIoDefaultIpConfigData, sizeof (EFI_IP4_CONFIG_DATA));\r
+ CopyMem (&OpenData.IpConfigData, &mIpIoDefaultIpConfigData, sizeof (OpenData.IpConfigData));\r
OpenData.IpConfigData.DefaultProtocol = EFI_IP_PROTO_TCP;\r
\r
OpenData.PktRcvdNotify = Tcp4RxCallback;\r
);\r
if (EFI_ERROR (Status)) {\r
SockDestroyChild (Sock);\r
+ goto ON_EXIT;\r
+ }\r
+\r
+ //\r
+ // Open the device path on the handle where service binding resides on.\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ TcpServiceData->ControllerHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ (VOID **) &Sock->ParentDevicePath,\r
+ TcpServiceData->DriverBindingHandle,\r
+ Sock->SockHandle,\r
+ EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ gBS->CloseProtocol (\r
+ TcpServiceData->IpIo->ChildHandle,\r
+ &gEfiIp4ProtocolGuid,\r
+ TcpServiceData->DriverBindingHandle,\r
+ Sock->SockHandle\r
+ );\r
+ SockDestroyChild (Sock);\r
}\r
\r
ON_EXIT:\r
\r
Status = SockDestroyChild (Sock);\r
\r
+ //\r
+ // Close the device path protocol\r
+ //\r
+ gBS->CloseProtocol (\r
+ TcpServiceData->ControllerHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ TcpServiceData->DriverBindingHandle,\r
+ ChildHandle\r
+ );\r
+\r
//\r
// Close the Ip4 protocol.\r
//\r